Reťazec sa označuje ako pole znakov. V C++ je prúd/sekvencia znakov uložená v poli znakov. C++ obsahuje triedu std::string, ktorá sa používa na reprezentáciu reťazcov. Je to jeden z najzákladnejších dátových typov v C++ a prichádza s obrovskou sadou vstavaných funkcií. V tomto článku sa pozrieme na funkcie výpočtov reťazcov.
Čo je std::string?
std::string je trieda v C++ od C++98. Táto trieda je štandardnou reprezentáciou textového reťazca. Zahŕňa niektoré typické operácie s reťazcami, ako je nájsť, nahradiť, zreťaziť, porovnať atď. Je prítomný v hlavičkový súbor.
Deklarácia a inicializácia reťazca
std::string company = 'techcodeview.com!';>
Bežne používané funkcie pre reťazce v C++
Trieda std::string obsahuje funkcie na poskytovanie niektorých bežných operácií s reťazcami. Nižšie uvedená tabuľka obsahuje niektoré z najčastejšie používaných funkcií v C++:
| Áno nie. | Kategória | Funkcie a operátori | Funkčnosť |
|---|---|---|---|
| 1. lineárne vyhľadávanie v jave | Dĺžka reťazca | dĺžka () alebo veľkosť () | Vráti dĺžku reťazca. |
| 2. | Prístup k znakom | Indexovanie (pomocou poľa[index]) | Prístup k jednotlivým znakom pomocou indexovania poľa. |
| v () | Používa sa na prístup k znaku v zadanom indexe. | ||
| 3. | Pripájanie a zreťazenie reťazcov | + Operátor | Operátor + sa používa na zreťazenie dvoch reťazcov. |
| Funkcia append() pridáva jeden reťazec na koniec druhého. | |||
| 4. | Porovnanie reťazcov | == Operátor | Reťazce môžete porovnávať pomocou operátora ==. |
| Funkcia Compare() vracia celočíselnou hodnotu označujúcu výsledok porovnania. | |||
| 5. | Podreťazce | Na extrahovanie podreťazca z reťazca použite funkciu substr(). | |
| 6. | Hľadá sa | Funkcia find() vráti pozíciu prvého výskytu podreťazca. | |
| 7. | Úprava reťazcov | nahradiť () | Na úpravu časti reťazca použite funkciu replace(). |
| vložiť() | Funkcia insert() pridá podreťazec na zadanú pozíciu. | ||
| vymazať() | Na odstránenie časti reťazca použite funkciu erase(). | ||
| 8. | Konverzia | c_str() | Ak chcete získať reťazec v štýle C zo std::string, môžete použiť funkciu c_str(). |
Poznámka: Vyššie uvedené funkcie fungujú len pre reťazce štýlu C++ (objekty std::string), nie pre reťazce štýlu C (súbor znakov).
1. Dĺžka reťazca – dĺžka() alebo veľkosť()
Dĺžku reťazca (počet znakov) zistíme pomocou buď dĺžka () alebo veľkosť () funkcia triedy std::string.
Syntax
string_object. size() or string_object. length()>
Parametre
- Táto funkcia neberie žiadny parameter.
Návratová hodnota
- Táto funkcia vráti počet znakov v objekte reťazca.
Príklad
std::string text = 'geeksforGeeks'; int length = text.length(); //or int length = text.size();>
Vráti dĺžku reťazca text čo je 13.
2. Prístup k znakom – at()
Vo všeobecnosti môžeme pristupovať k znaku reťazca pomocou [] operátor dolného indexu poľa a indexovanie. Ale std::string má tiež funkciu pomenovanú v () ktorý možno použiť na prístup k znakom reťazca.
Syntax
string_object. at( index );>
Parametre
- index: Predstavuje pozíciu znaku v reťazci.
Návratová hodnota
- Táto funkcia vráti znak prítomný v index.
Príklad
std::string str = 'GEEKSFORGEEKS'; std::cout << str.at(3);>
Std::cout vytlačí K na konzole, pretože je to znak prítomný na indexe 3.
3. Spájanie reťazcov – append() alebo + operátor
Reťazec môžeme v C++ zreťaziť dvoma spôsobmi:
1. + Operátor
Operátor + je preťažený v triede std::string na vykonanie zreťazenia reťazcov.
Syntax
string_object1 + string_object2>
Príklad
std::string firstName = 'Geeks'; std::string lastName = 'forGeeks'; std::string fullName = firstName + ' ' + lastName;>
Operátor + sa používa na zreťazenie dvoch reťazcov. Reťazec fullName bude techcodeview.com.
2. pripojiť ()
Funkcia append() je ďalšou členskou funkciou na zreťazenie dvoch reťazcov.
Syntax
string_object1. append ( string2 )>
Parametre
- string2: Táto funkcia berie reťazec, ktorý sa má pripojiť, ako parameter. Môže to byť reťazec štýlu C alebo C++.
Návratová hodnota
- Odkaz na posledný reťazec.
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string> Funkcia append() pridáva jeden reťazec na koniec druhého.
4. Porovnanie reťazcov – Operátor porovnať() alebo ==
Rovnako ako zreťazenie, aj porovnávanie reťazcov môžeme vykonať dvoma spôsobmi:
1. == Operátor
Operátor rovnosti možno použiť na porovnanie dvoch reťazcov, pretože je pre túto operáciu v triede std::string preťažený.
Syntax
string_object1 == string_object2>
Toto sa vráti pravda ak sú oba reťazce rovnaké, inak vráti falošný.
Príklad
std::string str1 = 'apple'; std::string str2 = 'banana'; if (str1 == str2) { std::cout << 'Strings are equal'; } else { std::cout << 'Strings are not equal'; }> Tu sa vypíše text Strings are not equal, pretože sa vráti operátor == falošný.
2. porovnať()
Funkcia Compare() je členská funkcia triedy std::string, ktorú možno použiť na porovnanie dvoch reťazcov.
Syntax
str1. compare( str2 );>
Parametre
- str2: Je to reťazec, ktorý sa má porovnávať. Môže to byť reťazec v štýle C alebo C++.
Návratová hodnota
- Ak sú reťazce rovnaké, vráťte sa nula.
- Ak je str1 väčšie ako str2, vráti sa hodnota >0
- Ak je str2 väčšie ako str1, vráti sa hodnota <0
Príklad
string str1 = 'Geeks'; string str2: = 'Geeksfor'; int result = str1. compare (str2);>
Výsledok bude obsahovať hodnotu menšiu ako nula, pretože str2 je väčšie ako str1.
Môžeme tiež porovnať podreťazec str2 pomocou funkcie porovnanie ():
str1.compare(position, length, str2);>
kde,
- position : pozícia prvého podreťazca znaku. dĺžka: dĺžka podreťazca. str2: Objekt reťazca, ktorý sa má porovnať.
5. Vyhľadávanie – nájdi()
Môžeme použiť Nájsť() funkcia triedy std::string na kontrolu, či je daný znak alebo podreťazec prítomný v reťazci alebo v časti reťazca.
Syntax funkcie find()
str1.find(var);>
Parametre
- var: Môže to byť reťazec štýlu C, reťazec štýlu C++ alebo znak, ktorý sa má v reťazci vyhľadať.
Návratová hodnota
- Vráti ukazovateľ na prvý výskyt znaku alebo podreťazca v reťazci.
Príklad
std::string text = 'C++ Programming'; int position = text.find('Programming'); // Find the position of a substring> Premenná position bude obsahovať 4, čo je začiatok prvého výskytu reťazca Programovanie v texte reťazca.
6. Generovanie podreťazca – substr()
Môžeme použiť funkcia substr(). na vygenerovanie časti reťazca ako nového objektu reťazca. Je to členská funkcia triedy std::string.
Syntax substr() v C
str1. substr ( start, end );>
Parametre
- začiatok: Počiatočná pozícia podreťazca, ktorý sa má vygenerovať. end: Koniec podreťazca, ktorý sa má vygenerovať.
Typ návratu
- Vráti novovytvorený objekt reťazca.
Príklad
std::string text = 'Hello, World!'; std::string sub = text.substr(7, 5); // Extract 'World'>
Vo vyššie uvedenom príklade. a sub reťazec bude obsahovať svet.
Úprava reťazcov
Nasledujúca funkcia nám umožňuje upraviť aktuálny reťazec.
1. vložiť()
Funkcia insert() nám umožňuje nielen pridať reťazec, ale umožňuje nám ho pridať aj na zadanú pozíciu. Je to tiež členská funkcia triedy std::string.
Syntax
str1. insert (index, str2);>
Parametre
- str2: reťazec, ktorý sa má vložiť. index: poloha, kam sa má vložiť nový reťazec
Typ návratu
- Odkaz na str1.
Príklad
std::string text = 'I have a cat.'; text.insert(9, ' black'); // Insert ' black' at position 9>
2. nahradiť()
Funkcia replace() nahradí časť reťazca daným iným reťazcom. Na rozdiel od vloženia sa odstránia znaky v časti, do ktorej sa má vložiť nový reťazec.
Syntax
str1. replace ( index, size, str2 );>
Parametre
- index: Index, kde začať nahrádzať nový reťazec. size: dĺžka časti struny, ktorá sa má vymeniť. str2: nový reťazec, ktorý sa má vložiť.
Typ návratu
- Odkaz na str1.
Príklad
std::string text = 'I like dogs.'; text.replace(7, 4, 'cats'); // Replace 'dogs' with 'cats'>
3. vymazať()
Funkcia erase() je členská funkcia triedy std::string, ktorá sa používa na odstránenie znaku alebo časti reťazca.
Syntax
str1 .erase( start, end);>
Parametre
- štart: Východisková poloha. koniec: Koncová pozícia.
Typ návratu
- Odkaz na str1.
Príklad
std::string text = 'This is an example.'; text.erase(5, 3); // Erase 'is '>
Previesť std::string na C reťazec – c_str)_
Funkcia c_str() je členská funkcia, ktorá sa používa na konverziu reťazca štýlu C++, t. j. objektov std::string, na reťazec štýlu C, t. j. pole znakov.
mesto v USA
Syntax
str1.c_str()>
Parametre
- Táto funkcia neberie žiadny parameter.
Návratová hodnota
- Ukazovateľ na ekvivalentné pole znakov.
Príklad
std::string str = 'C++'; const char* cstr = str.c_str()>
Príklad funkcií reťazcov v C++
Nižšie uvedený kód demonštruje použitie vyššie uvedených funkcií reťazca:
C++
// C++ Code to demostrate various functions available in> // String class> > #include> #include> > using> namespace> std;> > int> main()> {> >// Creating and initializing strings> >string greeting =>'Hello, World!'>;> >cout << greeting << endl;> >string name;> > >// Input from the user> >cout <<>'Enter your name: '>;> >cin>> meno;> >cout << name << endl;> > >// String length> >int> length = greeting.length();> >cout << length << endl;> > >// Accessing characters> >char> firstChar = greeting[0];> >char> secondChar = greeting.at(1);> >cout << firstChar <<>' '> << secondChar << endl;> > >// Appending and concatenating strings> >string firstName =>'Geek'>;> >string lastName =>'Geeks'>;> >string fullName = firstName +>' '> + lastName;> >cout << fullName << endl;> >string base =>'Hello'>;> >cout << base << endl;> >base.append(>' World!'>);> >cout << base << endl;> > >// String comparison> >string str1 =>'apple'>;> >string str2 =>'banana'>;> >if> (str1 == str2) {> >cout <<>'Strings are equal'> << endl;> >}> >else> {> >cout <<>'Strings are not equal'> << endl;> >}> > >int> result = str1.compare(str2);> >if> (result == 0) {> >cout <<>'Strings are equal'> << endl;> >}> >else> if> (result <0) {> >cout <<>'str1 comes before str2'> << endl;> >}> >else> {> >cout <<>'str1 comes after str2'> << endl;> >}> > >// Substrings> >string text =>'Hello, World!'>;> >cout << text << endl;> >string sub = text.substr(7, 5);> >cout << sub << endl;> > >// Searching> >string searchIn =>'C++ Programming'>;> >size_t> position = searchIn.find(>'Programming'>);> >if> (position != string::npos) {> >cout <<>'Found at position '> << position << endl;> >}> >else> {> >cout <<>'Not found'> << endl;> >}> > >// Modifying strings> >string modify =>'I like dogs.'>;> >modify.replace(7, 4,>'cats'>);> >cout << modify << endl;> >modify.insert(6,>' black'>);> >cout << modify << endl;> >modify.erase(6, 6);> >cout << modify << endl;> > >// Conversion> >string str =>'C++'>;> >const> char>* cstr = str.c_str();> >cout << cstr << endl;> > >return> 0;> }> |
>
>
Výkon
Hello, World! Enter your name: Geeks Geeks 13 H e Geek Geeks Hello Hello World! Strings are not equal str1 comes before str2 Hello, World! World Found at position 4 I like cats. I like black cats. I like cats. C++>