Рядок називається масивом символів. У C++ потік/послідовність символів зберігається в масиві char. C++ містить клас std::string, який використовується для представлення рядків. Це один із найфундаментальніших типів даних у C++ і він має величезний набір вбудованих функцій. У цій статті ми розглянемо функції рядкових обчислень.
Що таке std::string?
std::string є класом у C++, починаючи з C++98. Цей клас є стандартним представленням текстового рядка. Він містить деякі типові рядкові операції, такі як пошук, заміна, об’єднання, порівняння тощо. Він присутній у файл заголовка.
Оголошення та ініціалізація рядка
std::string company = 'techcodeview.com!';>
Часто використовувані рядкові функції в C++
Клас std::string містить функції для забезпечення деяких загальних операцій із рядками. У наведеній нижче таблиці містяться деякі з найпоширеніших функцій у C++:
| Так ні. | Категорія | Функції та оператори | Функціональність |
|---|---|---|---|
| 1. не null в js | Довжина рядка | length() або size() | Він поверне довжину рядка. |
| 2. | Доступ до символів | Індексація (з використанням array[index]) | Щоб отримати доступ до окремих символів за допомогою індексації масиву. |
| в() | Використовується для доступу до символу за вказаним індексом. | ||
| 3. | Додавання та об’єднання рядків | + Оператор | Оператор + використовується для об’єднання двох рядків. |
| Функція append() додає один рядок у кінець іншого. | |||
| 4. | Порівняння рядків | == Оператор | Ви можете порівнювати рядки за допомогою оператора ==. |
| Функція compare() повертає ціле значення, яке вказує на результат порівняння. | |||
| 5. | Підрядки | Використовуйте функцію substr(), щоб отримати підрядок із рядка. | |
| 6. | Пошук | Функція find() повертає позицію першого входження підрядка. | |
| 7. | Зміна рядків | замінити() | Використовуйте функцію replace(), щоб змінити частину рядка. |
| вставити() | Функція insert() додає підрядок у вказану позицію. | ||
| стерти() | Використовуйте функцію erase(), щоб видалити частину рядка. | ||
| 8. | Перетворення | c_str() | Щоб отримати рядок у стилі C із std::string, ви можете скористатися функцією c_str(). |
Примітка: Наведені вище функції працюють лише для рядків стилю C++ (об’єкти std::string), а не для рядків стилю C (масив символів).
1. Довжина рядка – length() або size()
Ми можемо знайти довжину рядка (кількість символів) за допомогою будь-якого length() або size() функція класу std::string.
Синтаксис
string_object. size() or string_object. length()>
Параметри
- Ця функція не приймає жодних параметрів.
Повернене значення
- Ця функція повертає кількість символів у рядковому об’єкті.
приклад
std::string text = 'geeksforGeeks'; int length = text.length(); //or int length = text.size();>
Він поверне довжину рядка текст що становить 13.
2. Доступ до символів – at()
Як правило, ми можемо отримати доступ до символу рядка за допомогою [] індексовий оператор масиву та індексація. Але std::string також має функцію під назвою в() який можна використовувати для доступу до символів рядка.
Синтаксис
string_object. at( index );>
Параметри
- індекс: представляє позицію символу в рядку.
Повернене значення
- Ця функція повертає символ, присутній у індекс.
приклад
std::string str = 'GEEKSFORGEEKS'; std::cout << str.at(3);>
std::cout виведе K на консолі, оскільки це символ, присутній під індексом 3.
3. Конкатенація рядків – оператор append() або +
Ми можемо конкатенувати рядок у C++ двома методами:
1. + Оператор
Оператор + перевантажено в класі std::string для виконання конкатенації рядків.
Синтаксис
string_object1 + string_object2>
приклад
std::string firstName = 'Geeks'; std::string lastName = 'forGeeks'; std::string fullName = firstName + ' ' + lastName;>
Оператор + використовується для об’єднання двох рядків. Рядок fullName буде techcodeview.com.
2. append()
Функція append() є ще однією функцією-членом для об’єднання двох рядків.
Синтаксис
string_object1. append ( string2 )>
Параметри
- string2: ця функція приймає рядок, який потрібно додати, як параметр. Це може бути рядок стилю C або C++.
Повернене значення
- Посилання на кінцевий рядок.
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string> Функція append() додає один рядок у кінець іншого.
4. Порівняння рядків – оператор compare() або ==
Подібно до конкатенації, порівняння рядків можна виконати двома методами:
1. == Оператор
Оператор рівності можна використовувати для порівняння двох рядків, оскільки він перевантажений для цієї операції в класі std::string.
Синтаксис
string_object1 == string_object2>
Це повернеться правда якщо обидва рядки рівні, інакше повертає помилковий.
приклад
std::string str1 = 'apple'; std::string str2 = 'banana'; if (str1 == str2) { std::cout << 'Strings are equal'; } else { std::cout << 'Strings are not equal'; }> Тут буде надруковано рядки нерівні, оскільки оператор == повернеться помилковий.
2. порівняти()
Функція compare() є функцією-членом класу std::string, яку можна використовувати для порівняння двох рядків.
Синтаксис
str1. compare( str2 );>
Параметри
- str2: це рядок для порівняння. Це може бути рядок у стилі C або C++.
Повернене значення
- Якщо рядки рівні, поверніться нуль.
- Якщо str1 більше ніж str2, повертає значення >0
- Якщо str2 більше за str1, повертає значення <0
приклад
string str1 = 'Geeks'; string str2: = 'Geeksfor'; int result = str1. compare (str2);>
Результат міститиме значення менше нуля, оскільки str2 більше ніж str1.
Ми також можемо порівняти підрядок str2 за допомогою функції порівняння():
str1.compare(position, length, str2);>
де,
- position : позиція першого символьного підрядка. length: довжина підрядка. str2: рядковий об’єкт для порівняння.
5. Пошук – find()
Ми можемо використовувати знайти() функція класу std::string, щоб перевірити, чи присутній даний символ або підрядок у рядку або його частині.
Синтаксис find()
str1.find(var);>
Параметри
- var: це може бути рядок у стилі C, рядок у стилі C++ або символ, який потрібно шукати в рядку.
Повернене значення
- Він повертає вказівник на перше входження символу або підрядка в рядку.
приклад
std::string text = 'C++ Programming'; int position = text.find('Programming'); // Find the position of a substring> Змінна position міститиме 4, що є початком першого входження рядка Програмування в тексті рядка.
6. Генерувати підрядок – substr()
Ми можемо використовувати функція substr(). щоб створити частину рядка як новий об’єкт рядка. Це функція-член класу std::string.
Синтаксис substr() у C
str1. substr ( start, end );>
Параметри
- початок: Початкова позиція підрядка, який буде згенерований. end: Кінець підрядка, який буде згенерований.
Тип повернення
- Він повертає щойно створений рядковий об’єкт.
приклад
std::string text = 'Hello, World!'; std::string sub = text.substr(7, 5); // Extract 'World'>
У наведеному вище прикладі. в суб рядок міститиме світ.
Зміна рядків
Наступна функція дозволяє нам змінювати поточний рядок.
1. вставити()
Функція insert() не тільки дозволяє нам додавати рядок, але також дозволяє нам додавати його у вказану позицію. Це також функція-член класу std::string.
Синтаксис
str1. insert (index, str2);>
Параметри
- str2: рядок для вставки. індекс: позиція, куди потрібно вставити новий рядок
Тип повернення
- Посилання на str1.
приклад
std::string text = 'I have a cat.'; text.insert(9, ' black'); // Insert ' black' at position 9>
2. замінити()
Функція replace() замінює частину рядка заданим іншим рядком. На відміну від вставки, символи в частині, куди потрібно вставити новий рядок, видаляються.
Синтаксис
str1. replace ( index, size, str2 );>
Параметри
- index: Індекс того, з чого почати заміну нового рядка. розмір: довжина частини рядка, яку потрібно замінити. str2: новий рядок, який потрібно вставити.
Тип повернення
- Посилання на str1.
приклад
альтернатива xampp
std::string text = 'I like dogs.'; text.replace(7, 4, 'cats'); // Replace 'dogs' with 'cats'>
3. стерти()
Функція erase() є функцією-членом класу std::string, яка використовується для видалення символу або частини рядка.
Синтаксис
str1 .erase( start, end);>
Параметри
- початок: вихідне положення. end: Кінцева позиція.
Тип повернення
- Посилання на str1.
приклад
std::string text = 'This is an example.'; text.erase(5, 3); // Erase 'is '>
Перетворення std::string на C String – c_str)_
Функція c_str() є функцією-членом, яка використовується для перетворення рядка стилю C++, тобто об’єктів std::string, у рядок стилю C, тобто масив символів.
Синтаксис
str1.c_str()>
Параметри
- Ця функція не приймає жодних параметрів.
Повернене значення
- Покажчик на еквівалентний масив символів.
приклад
std::string str = 'C++'; const char* cstr = str.c_str()>
Приклад рядкових функцій у C++
Наведений нижче код демонструє використання вказаних вище рядкових функцій:
C++
// C++ Code to demostrate various functions available in> // String class> > #include> #include> > using> namespace> std;> > int> main()> {> >// Creating and initializing strings> >string greeting =>'Hello, World!'>;> >cout << greeting << endl;> >string name;> > >// Input from the user> >cout <<>'Enter your name: '>;> >cin>> ім'я;> >cout << name << endl;> > >// String length> >int> length = greeting.length();> >cout << length << endl;> > >// Accessing characters> >char> firstChar = greeting[0];> >char> secondChar = greeting.at(1);> >cout << firstChar <<>' '> << secondChar << endl;> > >// Appending and concatenating strings> >string firstName =>'Geek'>;> >string lastName =>'Geeks'>;> >string fullName = firstName +>' '> + lastName;> >cout << fullName << endl;> >string base =>'Hello'>;> >cout << base << endl;> >base.append(>' World!'>);> >cout << base << endl;> > >// String comparison> >string str1 =>'apple'>;> >string str2 =>'banana'>;> >if> (str1 == str2) {> >cout <<>'Strings are equal'> << endl;> >}> >else> {> >cout <<>'Strings are not equal'> << endl;> >}> > >int> result = str1.compare(str2);> >if> (result == 0) {> >cout <<>'Strings are equal'> << endl;> >}> >else> if> (result <0) {> >cout <<>'str1 comes before str2'> << endl;> >}> >else> {> >cout <<>'str1 comes after str2'> << endl;> >}> > >// Substrings> >string text =>'Hello, World!'>;> >cout << text << endl;> >string sub = text.substr(7, 5);> >cout << sub << endl;> > >// Searching> >string searchIn =>'C++ Programming'>;> >size_t> position = searchIn.find(>'Programming'>);> >if> (position != string::npos) {> >cout <<>'Found at position '> << position << endl;> >}> >else> {> >cout <<>'Not found'> << endl;> >}> > >// Modifying strings> >string modify =>'I like dogs.'>;> >modify.replace(7, 4,>'cats'>);> >cout << modify << endl;> >modify.insert(6,>' black'>);> >cout << modify << endl;> >modify.erase(6, 6);> >cout << modify << endl;> > >// Conversion> >string str =>'C++'>;> >const> char>* cstr = str.c_str();> >cout << cstr << endl;> > >return> 0;> }> |
>
>
Вихід
Hello, World! Enter your name: Geeks Geeks 13 H e Geek Geeks Hello Hello World! Strings are not equal str1 comes before str2 Hello, World! World Found at position 4 I like cats. I like black cats. I like cats. C++>