Класс string и функция length в языке С++
String – это класс для представления строк в языке C++. Он является изменяемым, т.е. редактирование объекта этого класса возможно без создания нового.
Объявление объекта string
Объявляются строки так же, как и другие переменные в C++. Можно задать начальное значение строки, но также можно и оставить её пустой.
Примеры инициализации строк:
string str1;
stringstr2 = “String 2”;
Оба варианта объявления, приведенные выше, допустимы в языке программирования C++. Так как string является классом, его можно создать и при помощи конструкторов. Конструкторы могут вызываться как явно (после объявления переменной строки), так и неявно (во время объявления). Существует более 15 конструкторов данного класса.
Примеры явного и неявного вызова конструкторов:
string str1;
str1 += string(5, ‘e’); // явный вызовstringstr2(5, ‘e’); // неявный вызов
Ввод и вывод строк
Для того, чтобы ввести строку с клавиатуры нужно воспользоваться функциями cin / cout поточного вывода.
Пример ввода и вывода строк:
string str1, str2;
cin>> str1; // вводим букву s
cin>> str2; // вводим букву s
cout<< «String 1: » << str1 <<endl;
cout<< «String 2: » << str2 <<endl;
Вывод:
String 1: s
String 2: s
Также ввести строку с клавиатуры можно при помощи функции getline. Она имеет три входных параметра. Первый из них – название потока, второй — переменная типа string, а третий необязательный — разделитель, до которого считывается строка (по умолчанию это символ перевода строки “/n”).
Пример ввода при помощи getline:
string str1;
getline(cin, str1); // вводим букву a
cout<< «String 1: » << str1 <<endl;
Вывод:
String 1: a
Операции со строками
Для строк доступны следующие операторы языка программирования C++: +, <, >, <=, >=, !=, ==, =, +=. Примеры их использования:
string str1 = «String One», str2 = «String Two»;
cout<< «Concatenation: » << (str1 + str2) <<endl;
cout<<boolalpha; // // Благодаря boolalpha в строках ниже в операциях сравнения возвращается булевое, а не целое значение
cout<< «Less: » << (str1 < str2) <<endl;
cout<< «Greater: » << (str1 > str2) <<endl;
cout<< «Less than: » << (str1 <= str2) <<endl;
cout<< «Greater than: «<< (str1 >= str2) <<endl;
cout<< «Not equal: » << (str1 != str2) <<endl;
cout<< «Equal: » << (str1 == str2) <<endl;
cout<< «Assignment: » << (str1 = «String One Two») <<endl;
cout<< «Addition assignment: «<< (str1 += » Three») <<endl;
Вывод:
Concatenation: String OneString Two
Less: true
Greater: false
Less than: true
Greater than: false
Not equal: true
Equal: false
Assignment: String One Two
Addition assignment: String One Two Three
Методы класса string
С классом string можно производить различные действия. Основные его методы будут рассмотрены ниже.
- Append – добавление нескольких символов в конец строки.
- C_str — преобразование объекта string в С-строку.
- Clear – очистка строки.
- Empty – проверка строки на пустоту.
- Erase – удаление символов из строки.
- Find — поиск заданного фрагмента в строке.
- Find_first_of — поиск первого вхождения любого из символов заданного фрагмента.
- find_first_not_of— поиск первого вхождения, отличающегося от символов заданного фрагмента.
- find_last_of — поиск последнего вхождения любого из символов заданного фрагмента.
- find_last_not_of— поиск последнего вхождения, отличающегося от символов заданного фрагмента.
- Insert — вставка нескольких символов в середину строки.
- Push_back — добавление одного символа в конец строки.
- Replace — замена какого-либо фрагмента в строке.
- Resize— изменение длины строки.
- Rfind — “правый поиск”, определение последнего вхождения заданного фрагмента в строке.
- Substr – возврат подстроки.
Примеры использования данных методов:
string str1 = «String One»;
cout<< «Append: » << str1.append(» Two») <<endl;
str1.clear();
cout<< «Clear: » << str1 <<endl;
cout<< «Empty: » <<boolalpha<< str1.empty() <<endl;
cout<< «Insert: » << str1.insert(0, «String One») <<endl;
cout<< «Erase: » << str1.erase(6) <<endl;
cout<< «Find: » << str1.find(«tri») <<endl;
str1.push_back(‘i’);
cout<< «Push back: » << str1 <<endl;
cout<< «Find first of: » << str1.find_first_of(«i») <<endl;
cout<< «Replace: » << str1.replace(6, 1, «s») <<endl;
str1.resize(6);
cout<< «Resize: » << str1 <<endl;
cout<< «Substr: » << str1.substr(0, 3) <<endl;
Вывод:
Append: String One Two
Clear:
Empty: true
Insert: String One
Erase: String
Find: 1
Push back: Stringi
Find first of: 3
Replace: Strings
Resize: String
Substr: Str
Нахождение длины строки
Длину строки можно найти, пройдясь в цикле по всем символам до её конца. Однако в языке C++ есть функции, которые позволяют вычислить длину строки автоматическим образом.
Методы для нахождения длины строки имеют названияlength и size. Результат их работы абсолютно идентичен. Они возвращают текущий размер строки в байтах.
Пример кода:
string str1 = «String One»;
cout<< «Length: » << str1.length() <<endl;
cout<< «Size: » << str1.size() <<endl;
Вывод:
Length: 10
Size: 10