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:
- Déclarer une chaîne
- Essayez de parcourir la chaîne en utilisant tous les types d'itérateurs
- Essayez de modifier l'élément de la chaîne.
- 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