logo

Рядки в C++

Рядки C++ — це послідовності символів, що зберігаються в масиві char. Рядки використовуються для зберігання слів і тексту. Вони також використовуються для зберігання даних, наприклад чисел та інших типів інформації. Рядки в C++ можна визначити за допомогою std::string клас або Масиви символів у стилі C.

Рядки в 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++




jdbc jdbc
// 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++

javascript onclick




// 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++