Это простейшие способы инициализации объектов string. Их разновидности обладают большей гибкостью и лучше поддаются контролю (пример 2).
Пример 2
string s1 ("Точность – вежливость королей.");
string s2 ("Хаос это порядок, который нам не понятен");
string s3("Идея выше факта.");
// Копирование 7 символов из середины источника
string s4(s2, 9, 7);
cout<<”s4: ” << s4 << endl;
// Комбинированное копирование
string s5 = " - " + s1.substr(11,10)+s1.substr(21,50);
cout<<”s5: ”<< s5 << endl;
// Функция substr() также может копировать отдельные символы
string s6 = s3+s1.substr(0, 1);
cout<<”s6: “<< s6 << endl;
Результат
s4: порядок
s5: – вежливость королей.
s6: Идея выше факта.Т
Анализ
В первом аргументе функции substr() передается начальная по-зиция, а во втором – длина подстроки в символах. У обоих аргументов имеются значения по умолчанию. Функция substr() с пустым списком аргументов возвращает копию всего объекта string: это удобный спо-соб копирования строк в С++.
Функции append, insert, операторы: +, +=
Одно из самых ценных и удобных свойств строк С++ (как любого вектора) состоит в том, что они автоматически растут по мере надоб-ности, не требуя вмешательства со стороны программиста. Работа со строками не только становится более надежной, из нее почти пол-ностью устраняются "нетворческие" операции – отслеживание границ памяти, в которой хранятся данные строки.
Пример 3
string str1("Hello, ");
string str2("world!");
cout<<"Исходные строки:\n";
cout << "str1: " << str1 << endl;
cout << "str2: " << str2 << endl ;
// Конкатенация(сцепление) двух string-объектов.
string str3;
str3 = str1 + str2;
cout<<"str3: " << str3 << "\n\n";
// Демонстрация использования функции append() и оператора += .
string s("Служить ");
string s1("бы ");
string s2(" прислуживаться ");
s +=s1; // Присоединение строки "бы "
cout<<"s: "<<s<<endl;
s += "рад"; // Присоединение С-строки
cout<<"s: "<<s<<endl;
s += ','; // Присоединение отдельного символа
cout<<"s: "<<s<<endl;
s.append(s2); // Присоединение строки " прислуживаться "
(эквивалент +=)
cout<<"s: "<<s<<endl;
s.append("тошно"); // Присоединение С-строки (эквивалент +=)
cout<<"s: "<<s<<endl;
s.append(3,'.'); // Присоединение 3 символов:...
cout<<"s: "<<s<<endl;
// Демонстрация использования функции insert() для вставки строки.
string s4("Счастливые наблюдают");
cout <<"Исходная строка:\n";
cout << "s4: " << s4 << endl;
string s5("часов ");
s4.insert(11,s5); // Вставка строки "часов "
cout<<"s4: "<<s4<<endl;
s4.insert(17,"не"); //Вставка С-строки
cout<<"s4: "<<s4<<endl;
Результат
Исходные строки:
str1: Hello,
str2: world!
str3: Hello, world!
s: Служить бы
s: Служить бы рад
s: Служить бы рад,
s: Служить бы рад, прислуживаться
s: Служить бы рад, прислуживаться тошно
s: Служить бы рад, прислуживаться тошно …
Исходная строка:
s4: Счастливые наблюдают
s4: Счастливые часов наблюдают
s4: Счастливые часов не наблюдают
Анализ
Операторы + и += обеспечивают гибкие и удобные средства для объединения строковых данных. В правой части оператора может использоваться практически любой тип, интерпретируемый как один или несколько символов. Оператор + можно использовать для сцепления одного string-объекта с другим или string-объекта с C-строкой.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.