logo

Funkcie reťazcov v C++

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.

pripojiť ()

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 ==.

porovnať ()

Funkcia Compare() vracia celočíselnou hodnotu označujúcu výsledok porovnania.

5.

Podreťazce

substr()

Na extrahovanie podreťazca z reťazca použite funkciu substr().

6.

Hľadá sa

Nájsť()

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