Глава 21. Понятие строк в ANSI С и ANSI C++_________________________575
В начале раздела упоминался также второй тип поиска. Такие функции строкового класса, как find_first_of, find_first_not_of, find_last_of И find_last_not_of, представляют из себя такой тип поиска, при котором передаваемая функции в качестве аргумента последовательность символов рассматривается как набор отдельных символов. Пример:
string targetString("Вот цель наших поисков — поиск и еще раз поиск!");
cout « targetString. find_first__of ("no") « endl;
В данном случае производится поиск местонахождения символов "п" или "о" в строке targetString. Результат .равен 1, так как первый символ "о" встречается В ПОЗИЦИИ 1 СТрОКИ targetString.
Функция find_first_not_of соответственно ищет первый не совпадающий с аргументом символ:
cout « targetString.find_first_not_of("Вот") « endl;
Результат равен 3. В этой позиции в строке targetString находится символ " ", не входящий в набор {в, о, т) (запомните, что здесь не ищется слово
"Вот").
Как вы и ожидаете, функции find_last_of и find_last_not_of начинают поиск от конца строки и работают в обратном порядке. Обратите внимание на еще один аргумент в вызове функции, ограничивающий пространство поиска.
cout « targetString.find_last_of("абвг", 15) « endl;
Этот пример дает результат 10. Почему? Поиск в строке targetString начинается с 15 символа ("п." в слове "поисков") и производится в обратную сторону. Последнее, если считать отсюда, вхождение а, б, в, или г в строке
targetString — ЭТО, несомненно, "а" В СЛОВе "наших",
Подводя итог рассмотрения функций поиска, рассмотрим функцию
find last not of:
cout « targetString.find_last_not_of("абвг", 15) « endl;
Возвращаемый результат равен 15: последнее вхождение в строке targetString символа не из набора {а, б, в, г}, начиная с 19 символа и в обратную сторону — это "п" в слове "поисков".
Ввод-вывод строк ANSI при помощи операций « и »
Из приведенных выше примеров вы уже научились выводить экземпляры строкового класса. Для этого просто используйте перегруженную операцию «. Таким же образом работает и ввод — через операцию »: