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