Рядки в C++
Рядки C++ — це послідовності символів, що зберігаються в масиві char. Рядки використовуються для зберігання слів і тексту. Вони також використовуються для зберігання даних, наприклад чисел та інших типів інформації. Рядки в C++ можна визначити за допомогою std::string клас або Масиви символів у стилі C.
1. Рядки стилю C
Ці рядки зберігаються як звичайний старий масив символів, що закінчуються символом a нульовий символ ' ' . Це тип рядків, які C++ успадкував від мови C.
Синтаксис:
char str[] = 'techcodeview.com';
приклад:
C++
// C++ Program to demonstrate strings> #include> using> namespace> std;> int> main()> {> > char> s[] => 'techcodeview.com'> ;> > cout < < s < < endl;> > return> 0;> }> |
Вихід
techcodeview.com
2. std::string Клас
Це нові типи рядків, які представлено в C++ як клас std::string, визначений у файлі заголовка. Це забезпечує багато переваг перед звичайними рядками у стилі C, наприклад динамічний розмір, функції-члени тощо.
Синтаксис:
std::string str('techcodeview.com'); приклад:
C++
// C++ program to create std::string objects> #include> using> namespace> std;> int> main()> {> > string str(> 'techcodeview.com'> );> > cout < < str;> > return> 0;> }> |
Вихід
techcodeview.com
Ще один спосіб створити рядки, які мають один і той же символ, що повторюється знову і знову.
Синтаксис:
std::string str(number,character);
приклад:
C++
#include> using> namespace> std;> int> main()> {> > string str(5,> 'g'> );> > cout < < str;> > return> 0;> }> |
Вихід:
ggggg
Способи визначення рядка в C++
Рядки можна визначити кількома способами в C++. Доступ до рядків можна отримати зі стандартної бібліотеки за допомогою класу string. Для визначення рядків також можна використовувати масиви символів. Рядок надає багатий набір функцій, таких як пошук і маніпулювання, які є широко використовуваними методами. Незважаючи на те, що цей метод менш просунутий, ніж клас string, він все ще широко використовується, оскільки він більш ефективний і простий у використанні. Способи визначення рядка в C++:
- Використання ключового слова String
- Використання рядків у стилі C
1. Використання рядка Keyword
Зручніше визначати рядок за допомогою ключового слова string замість використання ключового слова array, оскільки його легко написати та зрозуміти.
Синтаксис:
string s = 'techcodeview.com'; string s('techcodeview.com'); приклад:
C++
// C++ Program to demonstrate use of string keyword> #include> using> namespace> std;> int> main()> {> > string s => 'techcodeview.com'> ;> > string str(> 'techcodeview.com'> );> > cout < <> 's = '> < < s < < endl;> > cout < <> 'str = '> < < str < < endl;> > return> 0;> }> |
Вихід
s = techcodeview.com str = techcodeview.com
2. Використання рядків C-стилю
Використання функцій бібліотек рядків у стилі C, таких як strcpy(), strcmp() і strcat() для визначення рядків. Цей метод є більш складним і не так широко використовується, як два інших, але він може бути корисним при роботі зі застарілим кодом або коли вам потрібна продуктивність.
char s[] = {'g', 'f', 'g', ' '}; char s[4] = {'g', 'f', 'g', ' '}; char s[4] = 'gfg'; char s[] = 'gfg'; приклад:
C++
// C++ Program to demonstrate C-style string declaration> #include> using> namespace> std;> int> main()> {> > char> s1[] = {> 'g'> ,> 'f'> ,> 'g'> ,> ' '> };> > char> s2[4] = {> 'g'> ,> 'f'> ,> 'g'> ,> ' '> };> > char> s3[4] => 'gfg'> ;> > char> s4[] => 'gfg'> ;> > cout < <> 's1 = '> < < s1 < < endl;> > cout < <> 's2 = '> < < s2 < < endl;> > cout < <> 's3 = '> < < s3 < < endl;> > cout < <> 's4 = '> < < s4 < < endl;> > return> 0;> }> |
Вихід
s1 = gfg s2 = gfg s3 = gfg s4 = gfg
Ще один приклад рядка в стилі C:
C++
#include> using> namespace> std;> int> main()> {> > string S => 'Geeeks for Geeks'> ;> > cout < <> 'Your string is= '> ;> > cout < < S < < endl;> > return> 0;> }> |
Вихід
Your string is= Geeeks for Geeks
Як використовувати рядковий ввід у C++
Введення рядка означає прийняття рядка від користувача. У C++. У нас є різні типи введення даних від користувача, які залежать від рядка. Найпоширенішим способом є використання вхідних даних прийом їжі ключове слово з оператором вилучення (>>) у C++. Методи для отримання рядка як вхідних даних:
- прийом їжі
- getline
- рядковий потік
1. За допомогою Cin
Найпростіший спосіб отримати рядковий ввід - це використовувати прийом їжі разом із оператором вилучення потоку (>>).
Синтаксис:
cin>>s;>
приклад:
C++
// C++ Program to demonstrate string input using cin> #include> using> namespace> std;> int> main() {> > string s;> > > cout < <> 'Enter String'> < cin>>s; cout < <'String is: ' < return 0; }> |
Вихід
Enter String String is:
Вихід:
Enter String techcodeview.com String is: techcodeview.com
2. Використання getline
The функція getline() у C++ використовується для читання рядка з вхідного потоку. Він оголошений у файлі заголовка.
Синтаксис:
getline(cin,s);
приклад:
C++
// C++ Program to demonstrate use of getline function> #include> using> namespace> std;> int> main()> {> > string s;> > cout < <> 'Enter String'> < < endl;> > getline(cin, s);> > cout < <> 'String is: '> < < s < < endl;> > return> 0;> }> |
Вихід
Enter String String is:
Вихід:
Enter String techcodeview.com String is: techcodeview.com
3. Використання stringstream
The клас stringstream в C++ використовується для одночасного введення кількох рядків.
Синтаксис:
stringstream stringstream_object(string_name);
приклад:
C++
// C++ Program to demonstrate use of stringstream object> #include> #include> #include> using> namespace> std;> int> main()> {> > string s => ' techcodeview.com to the Moon '> ;> > stringstream obj(s);> > // string to store words individually> > string temp;> > //>> оператор читатиме з об’єкта stringstream>> > while> (obj>> temp) {> > cout < < temp < < endl;> > }> > return> 0;> }> |
Вихід
techcodeview.com to the Moon
Як передати рядки функціям?
Подібно до того, як ми передаємо масив у функцію, рядки в C++ можна передати функціям як масиви символів. Ось приклад програми:
приклад:
C++
// C++ Program to print string using function> #include> using> namespace> std;> void> print_string(string s)> {> > cout < <> 'Passed String is: '> < < s < < endl;> > return> ;> }> int> main()> {> > string s => 'techcodeview.com'> ;> > print_string(s);> > return> 0;> }> |
Вихід
Passed String is: techcodeview.com
Покажчики та рядки
Покажчики в C++ є символічними представленнями адрес. Вони дозволяють програмам імітувати виклик за посиланням, а також створювати динамічні структури даних і керувати ними. Використовуючи покажчики, ми можемо отримати перший символ рядка, який є початковою адресою рядка. Як показано нижче, до заданого рядка можна отримати доступ і надрукувати його за допомогою вказівників.
приклад:
C++
// C++ Program to print string using pointers> #include> using> namespace> std;> int> main()> {> > string s => 'Geeksforgeeks'> ;> > // pointer variable declared to store the starting> > // address of the string> > char> * p = &s[0];> > // this loop will execute and print the character till> > // the character value is null this loop will execute and> > // print the characters> > while> (*p !=> ' '> ) {> > cout < < *p;> > p++;> > }> > cout < < endl;> > return> 0;> }> |
Вихід
Geeksforgeeks
Різниця між масивом String і Character у C++
Основна відмінність між рядком і масивом символів полягає в тому, що рядки незмінні, а масиви символів – ні.
| Рядок | Масив символів |
|---|---|
| Рядки визначають об'єкти, які можуть бути представлені як потоки рядків. | Нульовий символ завершує масив символів. |
| У рядках не відбувається розпаду масиву, оскільки рядки представлені як об’єкти. | Загроза розпад масиву присутній у випадку масиву символів |
| Клас string надає численні функції для маніпулювання рядками. | Масиви символів не пропонують вбудованих функцій для маніпулювання рядками. |
| Пам'ять розподіляється динамічно. | Розмір масиву символів має бути виділено статично. |
Дізнайтеся більше про різниця між рядками та масивами символів у C++
Рядкові функції C++
C++ надає деякі вбудовані функції, які використовуються для маніпулювання рядками, такі як функції strcpy() і strcat() для копіювання та конкатенації рядків. Деякі з них:
| функція | опис |
|---|---|
| довжина() | Ця функція повертає довжину рядка. |
| своп() | Ця функція використовується для обміну значеннями 2 рядків. |
| розмір() | Використовується для визначення розміру рядка |
| змінити розмір() | Ця функція використовується для зміни довжини рядка до заданої кількості символів. |
| знайти() | Використовується для пошуку рядка, який передається в параметрах |
| відсунути() | Ця функція використовується для просування переданого символу в кінець рядка |
| pop_back() | Ця функція використовується для видалення останнього символу з рядка |
| очистити() | Ця функція використовується для видалення всіх елементів рядка. |
| strncmp() | Ця функція порівнює щонайбільше першу кількість байтів обох переданих рядків. |
| strncpy() | Ця функція подібна до функції strcpy(), за винятком того, що копіюється щонайбільше n байт src |
| strrchr() | Ця функція визначає місце останнього входження символу в рядок. |
| зламаний() | Ця функція додає копію вихідного рядка в кінець цільового рядка |
| знайти() | Ця функція використовується для пошуку певного підрядка всередині рядка та повертає позицію першого символу підрядка. |
| замінити() | Ця функція використовується для заміни кожного елемента в діапазоні [перший, останній), який дорівнює старому значенню, новим значенням. |
| substr() | Ця функція використовується для створення підрядка з заданого рядка. |
| порівняти() | Ця функція використовується для порівняння двох рядків і повертає результат у вигляді цілого числа. |
| стерти() | Ця функція використовується для видалення певної частини рядка. |
Функції ітератора рядків C++
У C++ вбудовані функції ітератора рядка надають програмісту простий спосіб модифікувати та проходити елементи рядка. Ці функції:
| Функції | опис |
|---|---|
| почати() | Ця функція повертає ітератор, що вказує на початок рядка. |
| кінець() | Ця функція повертає ітератор, який вказує на кінець рядка. |
| rfind() | Ця функція використовується для пошуку останнього входження рядка. |
| rbegin() | Ця функція повертає зворотний ітератор, що вказує на кінець рядка. |
| render() | Ця функція повертає зворотний ітератор, що вказує на початок рядка. |
| cbegin() | Ця функція повертає const_iterator, що вказує на початок рядка. |
| декілька() | Ця функція повертає const_iterator, що вказує на кінець рядка. |
| crbegin() | Ця функція повертає const_reverse_iterator, що вказує на кінець рядка. |
| crend() | Ця функція повертає const_reverse_iterator, що вказує на початок рядка. |
приклад:
C++
// C++ Program to demonstrate string iterator functions> #include> using> namespace> std;> int> main()> {> > // declaring an iterator> > string::iterator itr;> > // declaring a reverse iterator> > string::reverse_iterator rit;> > string s => 'techcodeview.com'> ;> > itr = s.begin();> > > cout < <> 'Pointing to the start of the string: '> < < *itr < < endl;> > itr = s.end() - 1;> > cout < <> 'Pointing to the end of the string: '> < < *itr < < endl;> > rit = s.rbegin();> > cout < <> 'Pointing to the last character of the string: '> < < *rit < < endl;> > rit = s.rend() - 1;> > cout < <> 'Pointing to the first character of the string: '> < < *rit < < endl;> > return> 0;> }> |
Вихід
Pointing to the start of the string: G Pointing to the end of the string: s Pointing to the last character of the string: s Pointing to the first character of the string: G
Функції місткості рядків
У C++ функції ємності рядка використовуються для керування розміром і ємністю рядка. Основні функції потужності включають:
| функція | опис |
|---|---|
| довжина() | Ця функція використовується для повернення розміру рядка |
| місткість() | Ця функція повертає ємність, виділену рядку компілятором |
| змінити розмір() | Ця функція дозволяє нам збільшувати або зменшувати розмір рядка |
| shrink_to_fit() | Ця функція зменшує ємність і робить її рівною мінімальній. |
приклад:
C++
#include> using> namespace> std;> int> main()> {> > string s => 'techcodeview.com'> ;> > > // length function is used to print the length of the string> > cout < <> 'The length of the string is '> < < s.length() < < endl;> > > // capacity function is used to print the capacity of the string> > cout < <> 'The capacity of string is '> < < s.capacity() < < endl;> > > // the string.resize() function is used to resize the string to 10 characters> > s.resize(10);> > > cout < <> 'The string after using resize function is '> < < s < < endl;> > > s.resize(20);> > > cout < <> 'The capacity of string before using shrink_to_fit function is '> < < s.capacity() < < endl;> > > // shrink to fit function is used to reduce the capacity of the container> > s.shrink_to_fit();> > cout < <> 'The capacity of string after using shrink_to_fit function is '> < < s.capacity() < < endl;> > return> 0;> }> |
Вихід
The length of the string is 13 The capacity of string is 15 The string after using resize function is GeeksforGe The capacity of string before using shrink_to_fit function is 30 The capacity of string...
На завершення ця стаття пояснює, як рядки можуть бути визначені в C++ за допомогою масивів символів і класів рядків. Клас string надає більш розширені функції, тоді як масив символів надає базові функції, але є ефективним і простим у використанні. У цій статті ми також обговорили різні методи отримання інформації від користувача.
Щоб дізнатися більше про клас std::string, зверніться до статті – std::string клас у C++