Класс string находится в стандартной библиотеке и фактически позволяет удобно работать со строками переменной длины в отличии от строк типа массив char.
Рассмотрим пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <string> #include <iostream> using namespace std; int main() { string a("ask"); string b("about"); string ab = a + b; cout << ab; cout << ab[3] << ab[4] << ab[5] << ab[6] << ab[7] << std::endl; cout << "Kolvos: " << ab.size()<< std::endl; system("pause"); } |
Программа выведет слово askabout, затем about и число символов – 8. Работа шла как с char[], вызывались определенные элементы строки-массива, используя их номера.
Инициализация может быть задана как другим string, так и простым массивом символов char[]. Обратная инициализация – из строки в массив – требует специальную функцию c_str().
1 |
ab.c_str(); |
Так как класс string является самостоятельным контейнером, к нему также применимы большинство функций работы с контейнерами. Приведем пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <string> #include <iostream> // подключаем cout #include <algorithm> // подключаем std::replace using namespace std; int main() { string str( "sacred home" ); // задаем строку str = str + "needs" + str + "\n"; //складываем эту строку со строкой встроенного типа cout << str << endl; //выводим replace( str.begin(), str.end(), 'a', 'e' ); // заменяем символ a на e от начала до конца строки int size = str.size(); //получаем размер строки for ( int i = 0; i < size; i++ ) str.at(i)='0'; // вызываем элемент под номером i system("pause"); } |
Так же string доступны различные операции над строкой, аналогичные другим типам строк:
1 2 3 4 5 6 7 8 |
string str2 = str.substr (3,5); // извлекает подстроку из 5 символов, начиная с 3-его size_t found = str.find(str2); // находит подстроку в строке str.empty(); // проверяет пуста ли строка или нет str.insert(6,str2); // вставляет в строку подстроку в место 6-ого символа str.clear(); // очищение строки str.push_back('2'); // добавление символа в конец строки str.append(str2,1,3); // прикрепляет к строке подстроку из 3 символов, начиная с 1 символа подстроки str.replace(1,5,str2); // заменяет в строке 5 символов подстрокой, начиная с 3 символа |