classe std::string en C++

C++ té en la seva definició una manera de representar a seqüència de caràcters com a objecte de la classe . Aquesta classe s'anomena std:: string. La classe string emmagatzema els caràcters com una seqüència de bytes amb la funcionalitat de permetre accés al caràcter d'un sol byte .

Matriu String vs Character

Corda

Char Array

 Una corda és a classe que defineix els objectes que es representen com un corrent de personatges. Una matriu de caràcters és simplement un matriu de caràcters que es pot acabar amb un caràcter nul.
En el cas de les cadenes, la memòria és assignat dinàmicament . Es pot assignar més memòria en temps d'execució sota demanda. Com que no hi ha memòria prèviament assignada no es perd cap memòria . La mida de la matriu de caràcters ha de ser assignat estàticament no es pot assignar més memòria en temps d'execució si és necessari. No utilitzat assignat també es perd la memòria
Com les cadenes es representen com a objectes cap decadència de matriu es produeix. Hi ha un amenaça de decadència de matriu en el cas de la matriu de caràcters. 
Les cordes són més lentes en comparació amb la implementació que la matriu de caràcters. Implementació de La matriu de caràcters és més ràpida than std:: string. 
La classe String defineix una sèrie de funcionalitats que permeten múltiples operacions sobre cordes. Matrius de caràcters no ofereixin molts funcions incorporades per manipular cordes.

Operacions sobre cadenes

1) Funcions d'entrada

Funció Definició
getline() Aquesta funció s'utilitza per emmagatzemar un flux de caràcters introduïts per l'usuari a la memòria d'objectes.
push_back() Aquesta funció s'utilitza per introduir un caràcter al final de la cadena.
pop_back() Introduïda des de C++11 (per a cadenes), aquesta funció s'utilitza per eliminar l'últim caràcter de la cadena. 

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

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

Complexitat temporal: O(1)

Complexitat espacial: O(n) on n és la mida de la cadena

2) Funcions de capacitat

Funció Definició
capacitat () Aquesta funció retorna la capacitat assignada a la cadena que pot ser igual o superior a la mida de la cadena. S'assigna espai addicional de manera que quan s'afegeixen els nous caràcters a la cadena les operacions es poden fer de manera eficient.
canviar la mida () Aquesta funció canvia la mida de la cadena, la mida es pot augmentar o disminuir.
longitud () Aquesta funció troba la longitud de la cadena.
reduir_per_ajustar() Aquesta funció disminueix la capacitat de la cadena i la fa igual a la capacitat mínima de la cadena. Aquesta operació és útil per estalviar memòria addicional si estem segurs que no cal afegir més caràcters.

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

Sortida
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 

Complexitat temporal: O(1)

Complexitat espacial: O(n) on n és la mida de la cadena

3) Funcions d'iterador

Funció Definició
començar () Aquesta funció retorna un iterador al principi de la cadena.
final () Aquesta funció retorna un iterador al següent al final de la cadena.
rbegin() Aquesta funció retorna un iterador invers que apunta al final de la cadena.
render () Aquesta funció retorna un iterador invers que apunta a l'anterior o al començament de la cadena.
cbegin() Aquesta funció retorna un iterador constant que apunta al principi de la cadena que no es pot utilitzar per modificar el contingut a què apunta.
uns quants () Aquesta funció retorna un iterador constant que apunta al final de la cadena i no es pot utilitzar per modificar el contingut al qual apunta.
crbegin() Aquesta funció retorna un iterador invers constant que apunta al final de la cadena que no es pot utilitzar per modificar el contingut a què apunta.
crend() Aquesta funció retorna un iterador invers constant que apunta a l'anterior o al començament de la cadena, no es pot utilitzar per modificar el contingut al qual apunta.

Algorisme:

  1. Declarar una cadena
  2. Intenteu iterar la cadena utilitzant tot tipus d'iteradors
  3. Proveu de modificar l'element de la cadena.
  4. Mostra totes les iteracions.

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)   

Sortida
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 

Complexitat temporal: O(1)

Complexitat espacial: O(n) on n és la mida de la cadena

4) Funcions de manipulació:

Funció Definició
copy('char array' len pos)  Aquesta funció copia la subcadena a la matriu de caràcters de destinació esmentada als seus arguments. Es necessiten 3 arguments de longitud de matriu de caràcters objectiu per copiar-se i la posició inicial de la cadena per començar a copiar.
intercanviar () Aquesta funció intercanvia una cadena amb una altra

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

Sortida
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 


Cal llegir: Classe String C++ i les seves aplicacions