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:

  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:

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