Глава 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 символов, то точка после слова изменена все равно бы осталась.

Индексирование. Помимо возможности заменять последовательности символов в строке, в строковом классе существуют функции по замене отдельных символов. Вот простой способ заменить один символ: