Un șir este denumit o matrice de caractere. În C++, un flux/secvență de caractere este stocat într-o matrice de caractere. C++ include clasa std::string care este folosită pentru a reprezenta șiruri. Este unul dintre cele mai fundamentale tipuri de date din C++ și vine cu un set imens de funcții încorporate. În acest articol, vom analiza funcțiile calculelor șirurilor.
Ce este std::string?
Std::string este o clasă în C++ începând cu C++98. Această clasă este reprezentarea standard pentru un șir de text. Include câteva operații tipice cu șir, cum ar fi găsirea, înlocuirea, concatenarea, compararea etc. Este prezent în fișier antet.
Declarația și inițializarea șirului
std::string company = 'techcodeview.com!';>
Funcții de șir utilizate în mod obișnuit în C++
Clasa std::string conține funcții pentru a furniza unele operații comune cu șiruri. Tabelul de mai jos conține unele dintre cele mai frecvent utilizate funcții în C++:
| Da nu. | Categorie | Funcții și operatori | Funcționalitate |
|---|---|---|---|
| 1. rulează scripturi în linux | Lungimea șirului | lungime() sau dimensiune() | Va returna lungimea șirului. |
| 2. | Accesarea Personajelor | Indexare (folosind matrice[index]) | Pentru a accesa caractere individuale folosind indexarea matricei. |
| la() | Folosit pentru a accesa un caracter la un index specificat. | ||
| 3. | Adăugarea și concatenarea șirurilor | + Operator | Operatorul + este folosit pentru a concatena două șiruri. |
| Funcția append() adaugă un șir la sfârșitul altuia. | |||
| 4. | Comparație de șiruri | == Operator | Puteți compara șiruri folosind operatorul ==. |
| Funcția compare() returnează o valoare întreagă care indică rezultatul comparației. | |||
| 5. | Subșiruri | Utilizați funcția substr() pentru a extrage un subșir dintr-un șir. | |
| 6. | In cautarea | Funcția find() returnează poziția primei apariții a unui subșir. | |
| 7. | Modificarea șirurilor | a inlocui() | Utilizați funcția înlocuire() pentru a modifica o parte a șirului. |
| introduce() | Funcția insert() adaugă un subșir la o poziție specificată. | ||
| şterge() | Utilizați funcția erase() pentru a elimina o parte a șirului. | ||
| 8. | Conversie | c_str() | Pentru a obține un șir în stil C dintr-un std::string, puteți utiliza funcția c_str(). |
Notă: Funcțiile de mai sus funcționează numai pentru șiruri de stil C++ (obiecte std::string), nu pentru șiruri de caractere de stil C (matrice de caractere).
1. Lungimea șirului – lungime() sau dimensiune()
Putem găsi lungimea șirului (numărul de caractere) folosind oricare lungime() sau dimensiune() funcția clasei std::string.
Sintaxă
string_object. size() or string_object. length()>
Parametrii
- Această funcție nu preia niciun parametru.
Valoare returnată
- Această funcție returnează numărul de caractere din obiectul șir.
Exemplu
std::string text = 'geeksforGeeks'; int length = text.length(); //or int length = text.size();>
Va returna lungimea șirului text care este 13.
2. Accesarea caracterelor – la()
În general, putem accesa caracterul unui șir folosind [] operator indice matrice și indexare. Dar std::string are și o funcție numită la() care poate fi folosit pentru a accesa caracterele șirului.
Sintaxă
string_object. at( index );>
Parametrii
- index: Reprezintă poziția caracterului în șir.
Valoare returnată
- Această funcție returnează caracterul prezent la index.
Exemplu
std::string str = 'GEEKSFORGEEKS'; std::cout << str.at(3);>
Std::cout va imprima K pe consolă, deoarece este caracterul prezent la indexul 3.
3. Concatenarea șirurilor – append() sau + Operator
Putem concatena șiruri în C++ folosind două metode:
1. + Operator
Operatorul + este supraîncărcat în clasa std::string pentru a efectua concatenarea șirurilor.
Sintaxă
string_object1 + string_object2>
Exemplu
std::string firstName = 'Geeks'; std::string lastName = 'forGeeks'; std::string fullName = firstName + ' ' + lastName;>
Operatorul + este folosit pentru a concatena două șiruri. Șirul fullName va fi techcodeview.com.
2. adaugă ()
Funcția append() este o altă funcție membru pentru concatenarea a două șiruri.
Sintaxă
string_object1. append ( string2 )>
Parametrii
- șir2: Această funcție preia șirul care urmează să fie atașat ca parametru. Poate fi șir de stil C sau C++.
Valoare returnată
- Referire la șirul final.
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string> Funcția append() adaugă un șir la sfârșitul altuia.
4. Comparare șiruri – operator compare() sau ==
La fel ca și concatenarea, putem face compararea șirurilor folosind două metode:
1. == Operator
Operatorul de egalitate poate fi folosit pentru a compara cele două șiruri, deoarece este supraîncărcat pentru această operație în clasa std::string.
Sintaxă
string_object1 == string_object2>
Aceasta se va întoarce Adevărat dacă ambele șiruri sunt egale, în caz contrar returnează fals.
Exemplu
std::string str1 = 'apple'; std::string str2 = 'banana'; if (str1 == str2) { std::cout << 'Strings are equal'; } else { std::cout << 'Strings are not equal'; }> Aici, șirurile nu sunt egale vor fi tipărite, deoarece operatorul == va reveni fals.
2. compara()
Funcția compare() este o funcție membră a clasei std::string care poate fi folosită pentru a compara două șiruri.
Sintaxă
str1. compare( str2 );>
Parametrii
- str2: este șirul care trebuie comparat. Poate fi șir în stil C sau C++.
Valoare returnată
- Dacă șirurile sunt egale, returnați zero.
- Dacă str1 este mai mare decât str2, returnează valoarea >0
- Dacă str2 este mai mare decât str1, returnează valoarea <0
Exemplu
string str1 = 'Geeks'; string str2: = 'Geeksfor'; int result = str1. compare (str2);>
Rezultatul va conține o valoare mai mică decât zero, deoarece str2 este mai mare decât str1.
De asemenea, putem compara subșirul lui str2 folosind funcția de comparare ():
str1.compare(position, length, str2);>
Unde,
- poziție : poziția primului subșir de caractere. lungime: lungimea subșirului. str2: obiect șir de comparat.
5. Căutare – găsi ()
Putem folosi găsi() funcția clasei std::string pentru a verifica dacă un anumit caracter sau un subșir este prezent în șir sau o parte din șir.
Sintaxa lui find()
str1.find(var);>
Parametrii
- var: Poate fi un șir în stil C, șir în stil C++ sau un caracter care urmează să fie căutat în șir.
Valoare returnată
- Returnează indicatorul la prima apariție a caracterului sau a unui subșir din șir.
Exemplu
std::string text = 'C++ Programming'; int position = text.find('Programming'); // Find the position of a substring> Variabila de poziție va conține 4, care este începutul primei apariții a șirului Programare în text șir.
6. Generați subșir – substr()
Putem folosi funcția substr(). pentru a genera o parte a șirului ca un nou obiect șir. Este o funcție membră a clasei std::string.
Sintaxa substr() în C
str1. substr ( start, end );>
Parametrii
- start: Poziția de pornire a subșirului care urmează să fie generat. end: sfârșitul subșirului care urmează să fie generat.
Tip de returnare
- Returnează obiectul șir nou creat.
Exemplu
std::string text = 'Hello, World!'; std::string sub = text.substr(7, 5); // Extract 'World'>
În exemplul de mai sus. cel sub șirul va conține Lumea.
Modificarea șirurilor
Următoarea funcție ne permite să modificăm șirul curent.
1. insert ()
Funcția insert() nu numai că ne permite să adăugăm un șir, ci și să-l adăugăm la poziția specificată. Este, de asemenea, o funcție membră a clasei std::string.
maven install
Sintaxă
str1. insert (index, str2);>
Parametrii
- str2: șir de inserat. index: poziția unde se introduce noul șir
Tip de returnare
- Referire la str1.
Exemplu
std::string text = 'I have a cat.'; text.insert(9, ' black'); // Insert ' black' at position 9>
2. înlocuiți()
Funcția replace() înlocuiește partea din șir cu celălalt șir dat. Spre deosebire de insert, caracterele din partea în care urmează să fie introdus noul șir sunt eliminate.
Sintaxă
str1. replace ( index, size, str2 );>
Parametrii
- index: Indexul de unde să începeți înlocuirea noului șir. dimensiune: lungimea părții de șir care urmează să fie înlocuită. str2: șir nou care urmează să fie introdus.
Tip de returnare
- Referire la str1.
Exemplu
std::string text = 'I like dogs.'; text.replace(7, 4, 'cats'); // Replace 'dogs' with 'cats'>
3. șterge ()
Funcția erase() este o funcție membră a clasei std::string care este utilizată pentru a elimina un caracter sau o parte a șirului.
Sintaxă
str1 .erase( start, end);>
Parametrii
- start: Poziție de pornire. end: Poziție finală.
Tip de returnare
- Referire la str1.
Exemplu
std::string text = 'This is an example.'; text.erase(5, 3); // Erase 'is '>
Convertiți std::string în C String – c_str)_
Funcția c_str() este o funcție membru care este utilizată pentru a converti șirul de stil C++, adică obiectele std::string în șir de stil C, adică o matrice de caractere.
Sintaxă
str1.c_str()>
Parametrii
- Această funcție nu preia niciun parametru.
Valoare returnată
- Indicator către matricea echivalentă de caractere.
Exemplu
std::string str = 'C++'; const char* cstr = str.c_str()>
Exemplu de funcții șir în C++
Codul de mai jos demonstrează utilizarea funcțiilor șir specificate mai sus:
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>> nume;>>> > >// 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;> }> |
>
>
Ieșire
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++>