Reťazce C++ sú sekvencie znakov uložené v poli znakov. Reťazce sa používajú na ukladanie slov a textu. Používajú sa aj na ukladanie údajov, ako sú čísla a iné typy informácií. Reťazce v C++ môžu byť definované buď pomocou std::string trieda alebo Polia znakov v štýle C.

1. Struny v štýle C
Tieto reťazce sú uložené ako obyčajné staré pole znakov ukončené a nulový znak „ “ . Sú to typy reťazcov, ktoré C++ zdedilo z jazyka C.
Syntax:
char str[] = 'techcodeview.com';>
Príklad:
C++
// C++ Program to demonstrate strings> #include> using> namespace> std;> int> main()> {> >char> s[] =>'techcodeview.com'>;> >cout << s << endl;> >return> 0;> }> |
>
>Výkon
techcodeview.com>
2. std::string Trieda
Toto sú nové typy reťazcov, ktoré sú zavedené v C++ ako trieda std::string definovaná v hlavičkovom súbore. To poskytuje mnoho výhod oproti konvenčným reťazcom v štýle C, ako je dynamická veľkosť, členské funkcie atď.
Syntax:
std::string str('techcodeview.com');> Príklad:
C++
// C++ program to create std::string objects> #include> using> namespace> std;> int> main()> {> >string str(>'techcodeview.com'>);> >cout << str;> >return> 0;> }> |
>
>Výkon
techcodeview.com>
Ešte jeden spôsob, ako môžeme vytvoriť reťazce, ktoré majú rovnaký znak, ktorý sa opakuje znova a znova.
Syntax:
std::string str(number,character);>
Príklad:
C++
#include> using> namespace> std;> int> main()> {> >string str(5,>'g'>);> >cout << str;> >return> 0;> }> |
>
>
Výkon:
ggggg>
Spôsoby definovania reťazca v C++
Reťazce môžu byť v C++ definované niekoľkými spôsobmi. K reťazcom je možné pristupovať zo štandardnej knižnice pomocou triedy string. Na definovanie reťazcov možno použiť aj polia znakov. String poskytuje bohatú sadu funkcií, ako je vyhľadávanie a manipulácia, čo sú bežne používané metódy. Napriek tomu, že je menej pokročilá ako trieda reťazcov, táto metóda je stále široko používaná, pretože je efektívnejšia a ľahšie sa používa. Spôsoby, ako definovať reťazec v C++, sú:
- Použitie kľúčového slova String
- Použitie strún v štýle C
1. Použitie reťazca Kľúčové slovo
Je vhodnejšie definovať reťazec pomocou kľúčového slova string namiesto použitia kľúčového slova pole, pretože je ľahké ho zapísať a pochopiť.
Syntax:
string s = 'techcodeview.com'; string s('techcodeview.com');> Príklad:
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;> }> |
>
>Výkon
s = techcodeview.com str = techcodeview.com>
2. Použitie strún v štýle C
Používanie funkcií knižníc reťazcov v štýle C, ako sú strcpy(), strcmp() a strcat() na definovanie reťazcov. Táto metóda je zložitejšia a nie je tak rozšírená ako ostatné dve, ale môže byť užitočná pri práci so starým kódom alebo keď potrebujete výkon.
char s[] = {'g', 'f', 'g', ' '}; char s[4] = {'g', 'f', 'g', ' '}; char s[4] = 'gfg'; char s[] = 'gfg';> Príklad:
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;> }> |
>
>Výkon
s1 = gfg s2 = gfg s3 = gfg s4 = gfg>
Ďalší príklad reťazca v štýle C:
C++
#include> using> namespace> std;> int> main()> {> >string S =>'Geeeks for Geeks'>;> >cout <<>'Your string is= '>;> >cout << S << endl;> >return> 0;> }> |
>
>Výkon
Your string is= Geeeks for Geeks>
Ako prijať reťazcový vstup v C++
Vstup reťazca znamená prijatie reťazca od používateľa. V C++. Máme rôzne typy prijímania vstupu od používateľa, ktoré závisia od reťazca. Najbežnejším spôsobom je prevziať vstup pomocou jedenie kľúčové slovo s operátorom extrakcie (>>) v C++. Metódy na prijatie reťazca ako vstupu sú:
- jedenie
- getline
- stringstream
1. Pomocou Cin
Najjednoduchší spôsob, ako prijať reťazcový vstup, je použiť jedenie príkaz spolu s operátorom extrakcie prúdu (>>).
Syntax:
cin>>s;>
Príklad:
C++
string.compareto 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; }> |
>
>Výkon
Enter String String is:>
Výkon:
Enter String techcodeview.com String is: techcodeview.com>
2. Pomocou getline
The funkcia getline() v C++ sa používa na čítanie reťazca zo vstupného toku. Je deklarovaný v hlavičkovom súbore.
Syntax:
getline(cin,s);>
Príklad:
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;> }> |
>
>Výkon
Enter String String is:>
Výkon:
Enter String techcodeview.com String is: techcodeview.com>
3. Pomocou stringstream
The trieda stringstream v C++ sa používa na prijatie viacerých reťazcov ako vstupu naraz.
Syntax:
stringstream stringstream_object(string_name);>
Príklad:
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;> >//>> operátor bude čítať z objektu stringstream> >while> (obj>> teplota) {> >cout << temp << endl;> >}> >return> 0;> }> |
>
>Výkon
techcodeview.com to the Moon>
Ako odovzdať reťazce funkciám?
Rovnakým spôsobom, akým odovzdávame pole funkcii, môžu byť reťazce v C++ odovzdané funkciám ako polia znakov. Tu je príklad programu:
Príklad:
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;> }> |
>
>Výkon
Passed String is: techcodeview.com>
Ukazovatele a reťazce
Ukazovatele v C++ sú symbolické reprezentácie adries. Umožňujú programom simulovať volanie po referencii, ako aj vytvárať a manipulovať s dynamickými dátovými štruktúrami. Pomocou ukazovateľov môžeme získať prvý znak reťazca, ktorý je počiatočnou adresou reťazca. Ako je uvedené nižšie, k danému reťazcu je možné pristupovať a vytlačiť ho pomocou ukazovateľov.
Príklad:
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;> }> |
>
>Výkon
Geeksforgeeks>
Rozdiel medzi reťazcom a poľom znakov v C++
Hlavný rozdiel medzi reťazcom a poľom znakov je v tom, že reťazce sú nemenné, zatiaľ čo polia znakov nie.
| Reťazec | Pole znakov |
|---|---|
| Reťazce definujú objekty, ktoré môžu byť reprezentované ako reťazcové prúdy. | Znak null ukončuje pole znakov. |
| V reťazcoch nedochádza k žiadnemu rozpadu poľa, pretože reťazce sú reprezentované ako objekty. | Hrozba rozpad poľa je prítomný v prípade poľa znakov |
| Trieda reťazcov poskytuje množstvo funkcií na manipuláciu s reťazcami. | Polia znakov neponúkajú vstavané funkcie na manipuláciu s reťazcami. |
| Pamäť sa prideľuje dynamicky. | Veľkosť poľa znakov musí byť pridelená staticky. |
Zistite viac o rozdiel medzi reťazcami a poľami znakov v C++
Funkcie reťazcov C++
C++ poskytuje niektoré vstavané funkcie, ktoré sa používajú na manipuláciu s reťazcami, ako sú funkcie strcpy() a strcat() na kopírovanie a zreťazenie reťazcov. Niektoré z nich sú:
| Funkcia | Popis |
|---|---|
| dĺžka () | Táto funkcia vráti dĺžku reťazca. |
| vymeniť () | Táto funkcia sa používa na výmenu hodnôt 2 reťazcov. |
| veľkosť () | Používa sa na zistenie veľkosti reťazca |
| zmeniť veľkosť () | Táto funkcia slúži na zmenu veľkosti dĺžky reťazca až na daný počet znakov. |
| Nájsť() | Používa sa na nájdenie reťazca, ktorý sa odovzdáva v parametroch |
| push_back() | Táto funkcia sa používa na vloženie prechádzajúceho znaku na koniec reťazca |
| pop_back() | Táto funkcia sa používa na odstránenie posledného znaku z reťazca |
| jasný() | Táto funkcia sa používa na odstránenie všetkých prvkov reťazca. |
| strncmp() | Táto funkcia porovnáva najviac prvý počet bajtov oboch odovzdaných reťazcov. |
| strncpy() | Táto funkcia je podobná funkcii strcpy() okrem toho, že sa skopíruje najviac n bajtov src |
| strrchr() | Táto funkcia vyhľadá posledný výskyt znaku v reťazci. |
| prasknutý() | Táto funkcia pripojí kópiu zdrojového reťazca na koniec cieľového reťazca |
| Nájsť() | Táto funkcia sa používa na vyhľadávanie určitého podreťazca v reťazci a vracia pozíciu prvého znaku podreťazca. |
| nahradiť () | Táto funkcia sa používa na nahradenie každého prvku v rozsahu [prvý, posledný), ktorý sa rovná starej hodnote, novou hodnotou. |
| substr() | Táto funkcia sa používa na vytvorenie podreťazca z daného reťazca. |
| porovnať () | Táto funkcia sa používa na porovnanie dvoch reťazcov a vráti výsledok vo forme celého čísla. |
| vymazať() | Táto funkcia sa používa na odstránenie určitej časti reťazca. |
Funkcie iterátora C++ Strings
Funkcie iterátora reťazcov vstavané v jazyku C++ poskytujú programátorovi jednoduchý spôsob úpravy a prechodu prvkov reťazca. Tieto funkcie sú:
| Funkcie | Popis |
|---|---|
| začať() | Táto funkcia vracia iterátor ukazujúci na začiatok reťazca. |
| koniec() | Táto funkcia vracia iterátor, ktorý ukazuje na koniec reťazca. |
| rfind() | Táto funkcia sa používa na nájdenie posledného výskytu reťazca. |
| rbegin() | Táto funkcia vracia spätný iterátor ukazujúci na koniec reťazca. |
| render() | Táto funkcia vracia spätný iterátor ukazujúci na začiatok reťazca. |
| cbegin() | Táto funkcia vracia const_iterator ukazujúci na začiatok reťazca. |
| zopár() | Táto funkcia vracia const_iterator ukazujúci na koniec reťazca. |
| crbegin() | Táto funkcia vracia const_reverse_iterator ukazujúci na koniec reťazca. |
| Crend() | Táto funkcia vracia const_reverse_iterator ukazujúci na začiatok reťazca. |
Príklad:
C++
zoradený zoznam polí java
// 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;> }> |
>
>Výkon
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>
Funkcie kapacity reťazca
V C++ sa funkcie kapacity reťazca používajú na správu veľkosti a kapacity reťazca. Medzi hlavné funkcie kapacity patrí:
| Funkcia | Popis |
|---|---|
| dĺžka () | Táto funkcia sa používa na vrátenie veľkosti reťazca |
| kapacita() | Táto funkcia vracia kapacitu, ktorá je reťazcu pridelená kompilátorom |
| zmeniť veľkosť () | Táto funkcia nám umožňuje zväčšiť alebo zmenšiť veľkosť reťazca |
| zmenšiť, aby sa zmestili() | Táto funkcia znižuje kapacitu a vyrovnáva ju minimu. |
Príklad:
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;> }> |
>
>Výkon
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...>
Na záver tento článok vysvetľuje, ako možno reťazce definovať v C++ pomocou polí znakov a tried reťazcov. Trieda string poskytuje pokročilejšie funkcie, zatiaľ čo pole znakov poskytuje základné funkcie, ale je efektívne a ľahko sa používa. V tomto článku sme tiež diskutovali o rôznych spôsoboch, ako získať informácie od používateľa.
Ak sa chcete dozvedieť viac o triede std::string, pozrite si článok – std::string trieda v C++