572 __ ________________ _______Часть IV. Новые возможности C++
firstAlterString[1] = ":";
cout « firstAlterString « endl;
firstAlterStringt(1) = ".";
cout « firstAlterString « endl;
Результат будет следующим:
»
1: Эта строка будет подменена. 1. Эта строка будет подменена.
Обратите внимание на возможность использования как операции [ ], так и операции;). Такой же результат получится, если использовать функцию
put_at:
firstAlterString.put_at(I, ' : ' ) ;
Если вы хотите выделить из строки один символ, то используйте операцию
[ ], () ИЛИ ФУНКЦИЮ get_at:
cout « firstAlterString.get_at(l) « endl; •
Результатом будет
Сравнение строк
В дополнение к возможностям модификации строк, строковый класс должен иметь простой способ сравнивать строки. Сравнение строк, среди других применений, наиболее важно при сортировке, которая используется даже чаще, чем сортировка чисел. Чтобы убедиться в этом, достаточно открыть телефонный справочник.
Строковый класс ANSI C++ поддерживает все возможные операции сравнения: ==, !=, <, >, <= и >=. В следующих примерах будут использованы строки из предыдущего раздела:
string firstAlterString("1. Эта строка будет подменена.");
string secondAlterString("2. Эта тоже будет изменена. Нравится ей это или нет."
Попробуйте предсказать результат выполнения следующих операторов:
cout « (firstAlterString == secondAlterString) « endl;
cout « (firstAlterString < secondAlterString) « endl;
cout « (firstAlterString.compare(secondAiterString)) « endi;
f firstAlterString.remove(0, 3);
cout « (firstAlterString-compare(secondAlterString, 3, 3)) « endl;
Первое сравнение проверяет, являются ли firstAlterString и secondAlterString идентичными. Они, очевидно, не являются таковыми и результатом сравнения будет ноль, означающий ложность утверждения.