std::string
Заголовочный файл: #include <string>
Инициализация:
std::string s1;
// пустая строкаstd::string s1 = "hello";
// строчный литерал, всегда заключён в “”std::string s1("welcome");
std::string s1(5, 'h');
// “hhhhh”
Обращение к строке как к массиву:
s1[0] = 'M'
__Конкатенация:__
1.
```cpp
string s1 = "hello";
string s2 = "world";
string s3 = s1 + " " + s2; // hello world
2.s.append("text");
// добавить строку в конец строки
-
s.push_back('x');
// добавить символ в конец строки -
s.insert(3, "text");
// вставить символы в произвольный индекс строки -
s.clear()
// очистить строку -
erase(3);
// удалить начиная с 3 символа и до концаerase(2, 5);
// удалить 5 символов начиная с 2 индекса (123456789 -> 1289) -
swap(s1, s2);
// поменять значение строк местами
Сравнение:
bool result = s1 == s2;
// true, если все символы обеих строк равны (учитывается регистр)- Остальные операции сравнения (<, <=, >, >=) сравнивают строки в зависимости от регистра и алфавитного порядка посимвольно (если первые символы равны, то сравниваются следующие). Например по очевидным причинам “b” > “a”, “a” > “A”.
Методы:
s1.size();
s1.length();
assign()
// присваивает новое значение строке (тоже самое что и =)s1.empty();
// true если строка пустаяgetline(std::cin, name)
// считает полностью всю строку с IO stream вне зависимости от пробелов (в отличии от cin, который считывает только определенное количество переменных разделенных пробелами/табуляцией). Стоит заметить что после использования cin » x; getline() считает пустую строку, так как остался символ перевода строки, для этого стоит использовать “холостой” getline() либо cin » x » ws; ws - whitespaces, модификатор IO stream’a удаляющая все символы до первого отличного от разделительного. Так же можно использовать: cin.ignore(); - удалить 1 символ с потока ввода и cin.ignore(1, ‘\n’); - удалить 1 символ \n.s.find("rkpt");
// если подстрока нашлась, то вернет число, равное номеру символа, с которого началось первое вхождение подстроки в строку. Если подстроки не нашлось, то метод возвращает -1.
cstring
#include <cstring>
Стоит обратить внимание на то, что функции принимают указатели на первый элемент строки:
//C-style
char s[] = "C string\0";
int x = strlen(s); // 8
//Cpp
std::string s = "Cpp string";
int x = std::strlen(&s[0]); // 10
strlen(str) - длина строки
strcat(to, from) - конкатенация: добавить в конец первой строки вторую строку, функция не проверяет есть ли место в первой строке для второй, что может вызвать ошибку
strncat(to, from, n) - конкатенация, добавляет только n символов из второй строки
strstr(text, pattern) - поиск подстроки pattern в строке text, возвращает указатель на первое вхождение