Глава 21. Понятие строк в ANSI С и ANSI C++________________________569

string secondAlterString;

secondAlterString.assign("Эта строка тоже будет изменена.");

Еще один способ присваивания значения, о котором иногда забывают, связан с конструктором копий. В- следующей строке конструируется строка

copyString CO значением СТрОКИ firstAlterString:

string copyString (firstAlterString) ;

И последний способ присвоить строке значение состоит в том, чтобы назначить это значение как подстроку другой строки:

string substring = firstAlterString.substr(5, 6);

Если считать, что firstAlterString содержит все тот же текст "эта строка будет изменена", то значением substring в этом случае будет "строка" — это подстрока, начинающаяся с четвертой позиции (считая от нуля), длиной в шесть символов.

«

Замечание

Помните, что вызов функции substr с аргументом, являющимся экземпляром строкового класса, не изменяет значения самой строки, а полностью возвращает другую строку. Это, как мы увидим далее, не относится к таким

ФУНКЦИЯМ, как insert, remove И replace.

Конкатенация. В строковой библиотеке существует два типа конкатенации, то есть слияния одной или нескольких строк — добавление к началу и добавление в конец существующих строк. Следующие операции и функции дают тот же результат, что и выполнение операции присваивания.

Самый простой способ добавить строку в конец уже существующей — это операция +=:

string firstAlterString("Эта строка будет изменена.");

firstAlterString += " Нравится ей это или нет."

Если мы выведем на экран строку firstAlterString после применения операции +=

cout « firstAlterString « endl;

то результат будет иметь следующий вид:

Эта строка будет изменена. Нравится ей это или нет. ,

Более развернутая форма операции += — это функция добавления к концу строки append. Следующий пример эквивалентен предыдущему:

string thirdString(" Нравится ей это или нет.");

firstAlterString.append(thirdString);