На этом шаге мы рассмотрим еще один пример, иллюстрирующий использование итераторов при работе со строками.
В следующей программе приводятся другие примеры строковых операций с применением итераторов:
//--------------------------------------------------------------------------- #include <vcl.h> #include <string> #include <iostream> #include <algorithm> #include <conio.h> //необходимо для getch() #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused using namespace std; std::string ToRus(const std::string &in) { char *buff = new char [in.length()+1]; CharToOem(in.c_str(),buff); std::string out(buff); delete [] buff; return out; } int main (int argc, char* argv[]) { // Создание константной строки const string hello("Hello, how are you?"); cout << ToRus("Константная строка:\n") << hello << endl; // Инициализация строки s всеми символами строки hello string s(hello.begin(),hello.end()); // Перебор всех символов cout << ToRus("Строка s:\n"); string::iterator pos; for (pos = s.begin(); pos != s.end(); ++pos) { cout << *pos; } cout << endl; // Перестановка символов строки в обратном порядке reverse (s.begin(), s.end()); cout << ToRus("Перестановка символов строки в обратном порядке:\n") << s << endl; // Сортировка всех символов строки sort (s.begin(), s.end()); cout << ToRus("Отсортированная строка:\n") << s << endl; // Удаление смежных дубликатов // - unique() изменяет очередность символов и возвращает новый конец // - erase() удаляет лишние символы s.erase (unique(s.begin(), s.end()), s.end()); cout << ToRus("Строка без дубликатов:\n") << s << endl; getch(); return 0; } //---------------------------------------------------------------------------
Результат выполнения программы выглядит так:
Рис.1. Результат работы приложения
На следующем шаге мы приведем последний пример, иллюстрирующий использование итераторов при работе со строками.