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é de permettre 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 de 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 plus 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. | Mise en œuvre 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. |
| push_back() | 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 est utilisée pour supprimer le dernier caractère de la chaîne. |
Exemple:
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 ; }
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:
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 ; }
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 sur laquelle il ne peut pas être utilisé pour modifier le contenu vers lequel il pointe. |
| quelques() | Cette fonction renvoie un itérateur constant pointant vers la fin suivante de la chaîne, il ne peut pas être utilisé pour modifier le contenu vers lequel il pointe. |
| crbegin() | Cette fonction renvoie un itérateur inverse constant pointant vers la fin de la chaîne sur laquelle il ne peut pas être utilisé pour modifier le contenu vers lequel il pointe. |
| crend() | Cette fonction renvoie un itérateur inverse constant pointant vers le début précédent de la chaîne, il ne peut pas être utilisé pour modifier le contenu vers lequel il 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:
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)
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, longueur du tableau de caractères cible, pour être copié et position de départ dans la chaîne pour commencer la copie. |
| échanger() | Cette fonction échange une chaîne avec une autre |
Exemple:
CPP // 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