C++ are în definiția sa o modalitate de a reprezenta a succesiune de caractere ca obiect al clasei . Această clasă se numește std:: șir. Clasa șir stochează caracterele ca o secvență de octeți cu funcționalitatea de a permite acces la caracterul pe un singur octet .
Matrice șir vs caractere
Şir | Char Array pyspark |
|---|---|
| Un șir este a clasa care defineste obiectele care să fie reprezentate ca un flux de personaje. | O matrice de caractere este pur și simplu un matrice de caractere care poate fi terminat printr-un caracter nul. |
| În cazul șirurilor de caractere memoria este alocate dinamic . Mai multă memorie poate fi alocată în timpul rulării, la cerere. Deoarece nicio memorie nu este prealocată nicio memorie nu este irosită . | Dimensiunea matricei de caractere trebuie să fie alocate static mai multă memorie nu poate fi alocată în timpul rulării dacă este necesar. Nefolosit alocat se irosește și memoria |
| Ca șirurile sunt reprezentate ca obiecte fără dezintegrare a matricei apare. | Există o amenintarea cu dezintegrarea matricei în cazul matricei de caractere. |
| Corzile sunt mai lente în comparație cu implementarea decât matricea de caractere. | Implementarea matricea de caractere este mai rapidă decât std:: șir. |
| Clasa String definește o serie de funcționalități care permit operații multiple pe șiruri. | Matrice de caractere nu oferi multe funcții încorporate a manipula corzile. |
Operații pe șiruri
1) Funcții de intrare
| Funcţie | Definiţie |
|---|---|
| getline() | Această funcție este folosită pentru a stoca un flux de caractere introduse de utilizator în memoria obiectului. |
| push_back() | Această funcție este folosită pentru a introduce un caracter la sfârșitul șirului. |
| pop_back() | Introdusă din C++11 (pentru șiruri), această funcție este folosită pentru a șterge ultimul caracter din șir. |
Exemplu:
CPP// C++ Program to demonstrate the working of // getline() push_back() and pop_back() #include #include // for string class using namespace std; // Driver Code int main() { // Declaring string string str; // Taking string input using getline() getline(cin str); // Displaying string cout << 'The initial string is : '; cout << str << endl; // Inserting a character str.push_back('s'); // Displaying string cout << 'The string after push_back operation is : '; cout << str << endl; // Deleting a character str.pop_back(); // Displaying string cout << 'The string after pop_back operation is : '; cout << str << endl; return 0; }
Ieșire
The initial string is : The string after push_back operation is : s The string after pop_back operation is :
Complexitatea timpului: O(1)
Complexitatea spațiului: O(n) unde n este dimensiunea șirului
2) Funcții de capacitate
| Funcţie | Definiţie |
|---|---|
| capacitate() | Această funcție returnează capacitatea alocată șirului care poate fi egală sau mai mare decât dimensiunea șirului. Spațiul suplimentar este alocat astfel încât atunci când noile caractere sunt adăugate la șir, operațiunile pot fi efectuate eficient. |
| redimensiona() | Această funcție modifică dimensiunea șirului, dimensiunea poate fi mărită sau micșorată. |
| lungime() | Această funcție găsește lungimea șirului. |
| shrink_to_fit() | Această funcție scade capacitatea șirului și o face egală cu capacitatea minimă a șirului. Această operațiune este utilă pentru a economisi memorie suplimentară dacă suntem siguri că nu mai trebuie adăugate caractere. |
Exemplu:
CPP// C++ Program to demonstrate the working of // capacity() resize() and shrink_to_fit() #include #include // for string class using namespace std; // Driver Code int main() { // Initializing string string str = 'geeksforgeeks is for geeks'; // Displaying string cout << 'The initial string is : '; cout << str << endl; // Resizing string using resize() str.resize(13); // Displaying string cout << 'The string after resize operation is : '; cout << str << endl; // Displaying capacity of string cout << 'The capacity of string is : '; cout << str.capacity() << endl; // Displaying length of the string cout << 'The length of the string is :' << str.length() << endl; // Decreasing the capacity of string // using shrink_to_fit() str.shrink_to_fit(); // Displaying string cout << 'The new capacity after shrinking is : '; cout << str.capacity() << endl; return 0; }
Ieșire
The initial string is : geeksforgeeks is for geeks The string after resize operation is : geeksforgeeks The capacity of string is : 26 The length of the string is :13 The new capacity after shrinking is : 13
Complexitatea timpului: O(1)
listă imuabilă
Complexitatea spațiului: O(n) unde n este dimensiunea șirului
3) Funcții de iterator
| Funcţie | Definiţie |
|---|---|
| ÎNCEPE() | Această funcție returnează un iterator la începutul șirului. |
| Sfârşit() | Această funcție returnează un iterator la următorul sfârșit al șirului. |
| rbegin() | Această funcție returnează un iterator invers care indică la sfârșitul șirului. |
| face() | Această funcție returnează un iterator invers care indică la începutul și precedentul șirului. |
| cbegin() | Această funcție returnează un iterator constant care indică la începutul șirului, nu poate fi folosit pentru a modifica conținutul către care indică. |
| câteva () | Această funcție returnează un iterator constant care indică la următorul sfârșit al șirului, nu poate fi folosit pentru a modifica conținutul către care indică. |
| crbegin() | Această funcție returnează un iterator invers constant care indică la sfârșitul șirului, nu poate fi folosit pentru a modifica conținutul către care indică. |
| crend() | Această funcție returnează un iterator invers constant care indică la începutul anterioară a șirului, nu poate fi folosită pentru a modifica conținutul către care indică. |
Algoritm:
șir în dată
- Declarați un șir
- Încercați să repetați șirul folosind toate tipurile de iteratoare
- Încercați să modificați elementul șirului.
- Afișează toate iterațiile.
Exemplu:
CPP// C++ Program to demonstrate the working of // begin() end() rbegin() rend() cbegin() cend() crbegin() crend() #include #include // for string class using namespace std; // Driver Code int main() { // Initializing string` string str = 'geeksforgeeks'; // Declaring iterator std::string::iterator it; // Declaring reverse iterator std::string::reverse_iterator it1; cout<<'Str:'<<str<<'n'; // Displaying string cout << 'The string using forward iterators is : '; for (it = str.begin(); it != str.end(); it++){ if(it == str.begin()) *it='G'; cout << *it; } cout << endl; str = 'geeksforgeeks'; // Displaying reverse string cout << 'The reverse string using reverse iterators is ' ': '; for (it1 = str.rbegin(); it1 != str.rend(); it1++){ if(it1 == str.rbegin()) *it1='S'; cout << *it1; } cout << endl; str = 'geeksforgeeks'; //Displaying String cout<<'The string using constant forward iterator is :'; for(auto it2 = str.cbegin(); it2!=str.cend(); it2++){ //if(it2 == str.cbegin()) *it2='G'; //here modification is NOT Possible //error: assignment of read-only location //As it is a pointer to the const content but we can inc/dec-rement the iterator cout<<*it2; } cout<<'n'; str = 'geeksforgeeks'; //Displaying String in reverse cout<<'The reverse string using constant reverse iterator is :'; for(auto it3 = str.crbegin(); it3!=str.crend(); it3++){ //if(it2 == str.cbegin()) *it2='S'; //here modification is NOT Possible //error: assignment of read-only location //As it is a pointer to the const content but we can inc/dec-rement the iterator cout<<*it3; } cout<<'n'; return 0; } //Code modified by Balakrishnan R (rbkraj000)
Ieșire
Str:geeksforgeeks The string using forward iterators is : Geeksforgeeks The reverse string using reverse iterators is : Skeegrofskeeg The string using constant forward iterator is :geeksforgeeks The reverse string using constant reverse iterator is :skeegrofskeeg
Complexitatea timpului: O(1)
Complexitatea spațiului: O(n) unde n este dimensiunea șirului
4) Funcții de manipulare:
| Funcţie | Definiţie |
|---|---|
| copy('char array' len pos) | Această funcție copiază subșirul din matricea de caractere țintă menționată în argumentele sale. Este nevoie de 3 argumente țintă lungimea matricei de caractere pentru a fi copiată și poziția de pornire din șir pentru a începe copierea. |
| swap() | Această funcție schimbă un șir cu altul |
Exemplu:
cum se convertesc char în șir javaCPP
// C++ Program to demonstrate the working of // copy() and swap() #include #include // for string class using namespace std; // Driver Code int main() { // Initializing 1st string string str1 = 'geeksforgeeks is for geeks'; // Declaring 2nd string string str2 = 'geeksforgeeks rocks'; // Declaring character array char ch[80]; // using copy() to copy elements into char array // copies 'geeksforgeeks' str1.copy(ch 13 0); // Displaying char array cout << 'The new copied character array is : '; cout << ch << endl; // Displaying strings before swapping cout << 'The 1st string before swapping is : '; cout << str1 << endl; cout << 'The 2nd string before swapping is : '; cout << str2 << endl; // using swap() to swap string content str1.swap(str2); // Displaying strings after swapping cout << 'The 1st string after swapping is : '; cout << str1 << endl; cout << 'The 2nd string after swapping is : '; cout << str2 << endl; return 0; }
Ieșire
The new copied character array is : geeksforgeeks The 1st string before swapping is : geeksforgeeks is for geeks The 2nd string before swapping is : geeksforgeeks rocks The 1st string after swapping is : geeksforgeeks rocks The 2nd string after swapping is : geeksforgeeks is for geeks
Trebuie citit: Clasa String C++ și aplicațiile sale