Строковый класс
В С++ встроенный строковый тип отсутствует, но для более удобной работы со строками был разработан строковый класс.
Для того, чтобы можно было работать со строковым классом, необходимо подключить заголовочный файл <string>.
Строковый класс является классом-контейнером, поэтому поддерживает все алгоритмы библиотеки стандартных шаблонов.
Методы size() и length() возвращают количество символов в строке.
Поиск в строке
В классе string существует множество методов поиска подстрок и отдельных символов в строке табл.20.5.
Методы поиска в строке Табл. 20.5
Метод |
Описание |
find |
Находит первое вхождение подстроки, начиная с начала строки |
rfind |
Находит первое вхождение подстроки, начиная с конца строки |
find_first_of |
Находит индекс первого вхождения любого из символов подстроки |
find_last_of |
Находит индекс последнего вхождения любого из символов подстроки |
find_first_not_of |
Находит индекс первого из символов, не входящих в подстроку |
find_last_not _of |
Находит индекс последнего из символов, не входящих в подстроку |
Пример 20.4. Методы поиска в строке.
#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{ string ABC = "abcdefghijklmnopqrstuvwxyz";
string substr = "klmnop";
// поиск строковых литералов
cout << ABC.find("rstuv") << endl; // 17
cout << ABC.find("lkji") << endl; // -
// поиск строковых объектов
cout << ABC.find(substr) << endl; // 10
// с указанием начальной позиции поиска
cout << ABC.find(substr, 5) << endl; // 10
// поиск символов из представленного набора
cout << ABC.find_first_of("aeiou") << endl; // 0
cout << ABC.find_last_not_of("aeiou") << endl; // 25
_getch();
return 0;
}
Модификация строки
Модификация строки может заключаться в удалении, вставке или замене ее фрагмента. Эти действия выполняются с помощью методов, которые представлены в табл.20.6.
Методы модификации строк Табл. 20.6
Метод |
Описание |
append |
Добавляет подстроку в конец строки |
erase |
Удаляет фрагмент из строки |
insert |
Вставляет подстроку в указанное место строки |
replace |
Заменяет одну подстроку на другую |
Пример 20.5. Методы модификации строк.
#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{ setlocale(LC_ALL,"Russian");
string s1 = "Мишка очень любит мед!";
string s2 = "пчел!";
string s3 = " не ";
cout << s1 << endl;
s1.replace(18, 4, s2); // заменяем слово "мед" на "пчел"
s1.insert(11, s3); // добавляем слово "не" после слов //"Мишка очень"
cout << s1 << endl;
_getch();
return 0;
}