logo

std :: classe de chaînes en C++

C++ a dans sa définition une manière de représenter un séquence de caractères en tant qu'objet de la classe . Cette classe s'appelle std :: string. La classe string stocke les caractères sous forme de séquence d'octets avec la fonctionnalité permettant accès au caractère codé sur un octet .

Tableau de chaînes ou de caractères

Chaîne



Tableau de caractères

Une chaîne est un classe qui définit les objets qui être représenté comme un flux de caractères. Un tableau de caractères est simplement un tableau de caractères qui peut se terminer par un caractère nul.
Dans le cas des chaînes, la mémoire est alloué dynamiquement . Plus de mémoire peut être allouée au moment de l'exécution sur demande. Comme aucune mémoire n'est pré-allouée, aucune mémoire n'est gaspillée . La taille du tableau de caractères doit être alloué statiquement , davantage de mémoire ne peut pas être allouée au moment de l'exécution si nécessaire. Inutilisé alloué la mémoire est également gaspillée
Comme les chaînes sont représentées comme des objets, pas de dégradation du tableau se produit. Il y a un menace de dégradation du tableau dans le cas du tableau de caractères.
Les cordes sont plus lentes par rapport à l'implémentation qu'au tableau de caractères. Implémentation de le tableau de caractères est plus rapide que std :: string.
La classe de chaîne définit un certain nombre de fonctionnalités qui permettent de multiples opérations sur les chaînes. Tableaux de caractères n'offre pas beaucoup fonctions intégrées pour manipuler les chaînes.

Opérations sur les chaînes

1) Fonctions d'entrée

Fonction Définition
obtenir la ligne() Cette fonction permet de stocker un flux de caractères saisis par l'utilisateur dans la mémoire objet.
repousser() Cette fonction permet de saisir un caractère à la fin de la chaîne.
pop_back() Introduite à partir de C++11 (pour les chaînes), cette fonction permet de supprimer le dernier caractère de la chaîne.

Exemple:

RPC








// 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;> }>

>

>

Sortir

The initial string is : The string after push_back operation is : s The string after pop_back operation is :>

Complexité temporelle : O(1)

Complexité spatiale : O(n) où n est la taille de la chaîne

2) Fonctions de capacité

Fonction Définition
capacité() Cette fonction renvoie la capacité allouée à la chaîne, qui peut être égale ou supérieure à la taille de la chaîne. Un espace supplémentaire est alloué afin que lorsque les nouveaux caractères sont ajoutés à la chaîne, les opérations puissent être effectuées efficacement.
redimensionner() Cette fonction modifie la taille de la chaîne, la taille peut être augmentée ou diminuée.
longueur() Cette fonction trouve la longueur de la chaîne.
rétrécir_to_fit() Cette fonction diminue la capacité de la chaîne et la rend égale à la capacité minimale de la chaîne. Cette opération est utile pour économiser de la mémoire supplémentaire si l'on est sûr qu'aucun autre ajout de caractères ne doit être effectué.

Exemple:

essayez d'attraper Java

RPC




// 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;> }>

tableau java de chaîne

>

>

Sortir

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>

Complexité temporelle : O(1)

Complexité spatiale : O(n) où n est la taille de la chaîne

3) Fonctions de l'itérateur

Fonction Définition
commencer() Cette fonction renvoie un itérateur au début de la chaîne.
fin() Cette fonction renvoie un itérateur à la fin de la chaîne.
rcommencer() Cette fonction renvoie un itérateur inverse pointant vers la fin de la chaîne.
rend() Cette fonction renvoie un itérateur inverse pointant vers le début précédent de la chaîne.
ccommencer() Cette fonction renvoie un itérateur constant pointant vers le début de la chaîne, elle ne peut pas être utilisée pour modifier le contenu vers lequel elle pointe.
quelques() Cette fonction renvoie un itérateur constant pointant vers la fin suivante de la chaîne, elle ne peut pas être utilisée pour modifier le contenu vers lequel elle pointe.
crbegin() Cette fonction renvoie un itérateur inverse constant pointant vers la fin de la chaîne, elle ne peut pas être utilisée pour modifier le contenu vers lequel elle pointe.
crend() Cette fonction renvoie un itérateur inverse constant pointant vers le début précédent de la chaîne, elle ne peut pas être utilisée pour modifier le contenu vers lequel elle pointe.

Algorithme:

  1. Déclarer une chaîne
  2. Essayez de parcourir la chaîne en utilisant tous les types d'itérateurs
  3. Essayez de modifier l'élément de la chaîne.
  4. Afficher toutes les itérations.

Exemple:

RPC




// 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:'><' '; // 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<<' '; 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<<' '; return 0; } //Code modified by Balakrishnan R (rbkraj000)>

>

>

Sortir

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>

Complexité temporelle : O(1)

Complexité spatiale : O(n) où n est la taille de la chaîne

4) Fonctions de manipulation :

Fonction Définition
copier (tableau de caractères, len, pos) Cette fonction copie la sous-chaîne dans le tableau de caractères cible mentionné dans ses arguments. Il faut 3 arguments, un tableau de caractères cible, une longueur à copier et une position de départ dans la chaîne pour commencer la copie.
échanger() Cette fonction échange une chaîne avec une autre

Exemple:

RPC




windows.ouvrir javascript

// 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;> }>

>

>

Sortir

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>

Doit lire: Classe de chaînes C++ et ses applications