Глава 21. Понятие строк в ANSI С и ANSI C++_________________________577
что приведет к следующему результату:
1. Эта строка будет изменена.
! Предупреждение
Работая со строками посредством строкового класса ANSI C++ вы, как и в С, косвенно имеете дело с символьными массивами. Не забывайте, что любое индексирование начинается от нуля, а не от единицы. Если вы начнете отсчитывать от первого символа в таких функциях, как remove, то вы потеряете один символ.
Вам не обязательно удалять всю оставшуюся часть строки. Передавая два параметра функции remove, вы можете указать начало и длину удаляемой строки.
string secondAlterString = "2. Эта строка тоже будет изменена. Нравится ей это или нет." ;
secondAlterString.remove(7, 7) ;
cout « secondAlterString « end.1; »
Результат будет следующим:
2. Эта тоже будет изменена. Нравится ей это или нет.
Здесь из строки secondAlterString было удалено слово из семи символов "строка ", начиная от символа 7 (если по-человечески, то от восьмого символа, т. е. символа "с" в слове строка).
Замена. При замене части строки используется тот же способ нумерации символов в строке. Рассмотрим следующий пример:
string firstAlterString ("1. Эта строка будет изменена.");
string tempString("подменена");
firstAlterString.replace(20, 9, tempString);
cout « firstAlterString « endl;
Результат будет следующим:
1. Эта строка будет подменена.
Здесь слово изменена заменено на подменена. Обратите внимание, что длина слова подменена на один символ больше, чем слова изменена, и при этом точка сохранилась. Строкой tempString, длина которой девять символов, были заменены восемь символов строки firstAlterString, начиная с двадцатого символа. Это — не проблема; даже если бы tempString была длиной в 100 символов, то точка после слова изменена все равно бы осталась.
Индексирование. Помимо возможности заменять последовательности символов в строке, в строковом классе существуют функции по замене отдельных символов. Вот простой способ заменить один символ: