![]() |
|
Программирование >> Расширенная версия языка c++
5;Примеры 1. Хотя мы уже привыкли к традиционным строкам в стиле С, в C++ класс string делает обработку строк существенно проще. Например, при работе с объектами типа string для присваивания строк можно использовать оператор -, для конкатенации строк - оператор +, а для сравнения строк - различные операторы сравнения. В следующей программе показаны эти операции. Короткий пример использования строкового класса #include <iostreain> ttinclude <stiring> using namespace std; int mainO string strl( Представление строк string str2( Вторая строка ); string str3; / ивание строк у str3 = strl; cout strl \n str3 енация двух строк str3 = strl + 3tr2; cout str3 \n ; сравнение строк if(str3 > strl) cout str3 > strl\n ; if(str3 == strl+str2) cout str3 - strl+str2\n ; строковому объекту можно присвоить обычную строку strl = Это обычная Суохд,\п ! cout <:<- strl; . \ / создание строкового объекта . с помощью другого строкового объекта string cout str4; ввод строки cou << Введите строку: cin str4; cout str4; return 0; После выполнения программы на экране появится следующее: Представление строк .. . . . ч. Представление строк . Глава 14 стандартных шаблонов 469 Представление строкВторая строка . *. , str3 > strl str3 == strl+str2 Это обычная строка Это оОычная строка Введите строку: Привет Привет Как видите, с объектами типа string можно обращаться так же, как и со встроенными типами данных C++. Это, фактически, и есть главное достоинство строкового класса. Отметьте простоту манипулирования со строками: для конкатенации строк используется обычный оператор +, а для их сравнения - обычный оператор >. Чтобы выполнить те же операции для оканчивающихся нулем строк в стиле С, вам пришлось бы вызывать функции strcat() и strcmp(), что, согласитесь, гораздо менее удобно. Поскольку объекты типа string можно совершенно свободно указывать в выражениях вместе с оканчивающимися нулем строками в стиле С, то никаких неприятностей от их использования в ваших программах быть не может, а выгоды, наоборот, - очевидны. Имеется еще одна деталь, на которую следует обратить внимание в предыдущей программе: размеры строк не задаются. Объекты типа string автоматически настраиваются на хранение строк требуемой длины. Таки зом, когда вы выполняете присваивание или конкатенацию строк, размер целевой строки автоматически вырастает ровно настолько, насколько это нужно для размещения новой строки. Этот динамический аспект использования объектов типа string следует всегда принимать во внимание при выборе варианта представления строк в ваших программах. (Как уже отмечалось, стандартные оканчивающиеся нулем строки являются возможным источником нарушения границ массивов). 2. В следующей программе демонстрируются функции insert(), erase() и replace О. Использование функций insert ase () lace () linclude <iostream> tinclude <string> using namespace std; int mainO - . { . * string strl( Это проверка ); . - . string str2 ( АБЕГДЕЖ ) ; cou Исходн1е строки: \n cout strl: strl endl; cout str2: str2 \n\n ; ; работа функции insert О cout Вставка строки str2 в строку strl:\n .. ;- strl, insert (4, str2) ; - . cout << strl \n\n ; работа функции erase () cou <-. Удаление се стволов из строки 3trl;\n strl.erase (4, 7) ; cout strl работа функции cout Замена восьми даоЛОЕ из str олами из str2:\n strl. replace (4, 8, str2) ; ,. - cout strl \n\n ; return 0; После выполнения программы на экране появится следующее: Исходные строки: strl: Это проверка \ - str2 : АБВГДЕЖ ., . , , Вставка Оки str2 в строку strl: . ,. Это ДБВГДЕЖпроверка : Удаление семи символов из строки Это проверка Замена восьми символов из strl символами из Это АБВГДЕЖ 3. Поскольку клас ing определяет тип даннхх, появляется возможность создавать контейнеры для хранения объектов типа string. Например, ниже представлена усовершенствованная версия программы создания ассоциативного списка для хранения слов и антонимов, впервые показанная в примере 3 раздела 14.5. /* Ассоциативный список слов и антонимов для объектов типа string ftinclude <iostreain> ftinclude <map> include <stEing> using namespace std; int { string> m; int i; m. insert (pair<string, string>( да , нет )) ; ir<string, string> ( хорошо xo .) ) ; m. insert(pair<string, string>{ влево ) , вправо )) ; m, insert(pait<string, string>( вверх ), вниз )) ;
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |