Глава 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);