logo

Reťazce v C++

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.

Reťazce v 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++