В C++ есть много разных методов для работы со строками. Рассмотрим некоторые из них.
Метод substr
Метод substr извлекает из строки подстроку заданной длины с заданным индексом начала. Рассмотрим на примере:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin >> s;
cout << s.substr(3, 2) << endl;
return 0;
}
При входной строке abcdefg результатом будет подстрока de (начинается с индекса 3 длины 2).
Если второй параметр функции substr не задан, то вернётся подстрока, начинающаяся с заданного индекса и идущая до конца строки (суффикс строки). Например:
string s;
cin >> s;
cout << s.substr(3) << endl;
При входной строке abcdefg результатом будет подстрока defg.
Методы find и rfind
Метод find возвращает индекс, начиная с которого впервые встречается данная подстрока. Рассмотрим на примере:
string s;
cin >> s;
cout << s.find("bcd") << endl;
При входной строке abcdqwerbcd результатом будет 1.
Заметим, что если такой подстроки в строке не было (например, если мы ввели строку aaaaaaa), то вернётся некоторое очень большое число. Это связано с тем, что метод find возвращает число типа unsigned int. Приведём данное число к типу int и получим −1:
string s;
cin >> s;
cout << (int)s.find("bcd") << endl;
Теперь при входной строке aaaaaaa результатом будет число −1.
Аналогично работает функция rfind, определяющая индекс последнего (правого) вхождения строки. Например:
string s;
cin >> s;
cout << (int)s.rfind("bcd") << endl;
При входной строке abcdqwerbcd результатом будет 8.
|