Il C++ ha nella sua definizione un modo per rappresentare a sequenza di caratteri come oggetto della classe . Questa classe si chiama std:: string. La classe string memorizza i caratteri come una sequenza di byte con la funzionalità di consentire accesso al carattere a byte singolo .

Stringa e array di caratteri

Corda

classe che definisce gli oggetti essere rappresentato come un flusso di caratteri. Un array di caratteri è semplicemente un file che può essere terminato con un carattere nullo.
Nel caso delle stringhe la memoria è allocati dinamicamente . È possibile allocare più memoria in fase di esecuzione su richiesta. Poiché nessuna memoria è preallocata . La dimensione dell'array di caratteri deve essere se necessario, non è possibile allocare più memoria in fase di esecuzione. Assegnato inutilizzato
Poiché le stringhe sono rappresentate come oggetti nessun decadimento dell'array si verifica. C'è un minaccia di decadimento dell'array nel caso dell'array di caratteri. 
Le stringhe sono più lente rispetto all'implementazione rispetto all'array di caratteri. Implementazione di l'array di caratteri è più veloce di std:: stringa. 
La classe String definisce una serie di funzionalità che consentono molteplici operazioni sulle stringhe. Matrici di caratteri non offrire molti funzioni integrate per manipolare le corde.

Operazioni sulle stringhe

1) Funzioni di ingresso

Funzione Definizione
getline() Questa funzione viene utilizzata per memorizzare un flusso di caratteri immessi dall'utente nella memoria dell'oggetto.
push_back() Questa funzione viene utilizzata per inserire un carattere alla fine della stringa.
pop_back() Introdotta da C++11 (per le stringhe) questa funzione viene utilizzata per eliminare l'ultimo carattere dalla stringa. 

Esempio:

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

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

Complessità temporale: O(1)

Complessità spaziale: O(n) dove n è la dimensione della stringa

2) Funzioni di capacità

Funzione Definizione
capacità() Questa funzione restituisce la capacità allocata alla stringa che può essere uguale o superiore alla dimensione della stringa. Viene allocato spazio aggiuntivo in modo che quando i nuovi caratteri vengono aggiunti alla stringa le operazioni possano essere eseguite in modo efficiente.
ridimensionare() Questa funzione modifica la dimensione della stringa, la dimensione può essere aumentata o diminuita.
lunghezza() Questa funzione trova la lunghezza della stringa.
restringere_per_adattare() Questa funzione diminuisce la capacità della stringa e la rende pari alla capacità minima della stringa. Questa operazione è utile per risparmiare ulteriore memoria se siamo sicuri di non dover fare ulteriori aggiunte di caratteri.

Esempio:

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

Produzione
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 

Complessità temporale: O(1)

Complessità spaziale: O(n) dove n è la dimensione della stringa

3) Funzioni dell'iteratore

Funzione Definizione
inizio() Questa funzione restituisce un iteratore all'inizio della stringa.
FINE() Questa funzione restituisce un iteratore successivo alla fine della stringa.
rbegin() Questa funzione restituisce un iteratore inverso che punta alla fine della stringa.
rendere() Questa funzione restituisce un iteratore inverso che punta al precedente dell'inizio della stringa.
cbegin() Questa funzione restituisce un iteratore costante che punta all'inizio della stringa e non può essere utilizzato per modificare il contenuto a cui punta.
alcuni() Questa funzione restituisce un iteratore costante che punta alla fine successiva della stringa e non può essere utilizzato per modificare il contenuto a cui punta.
crbegin() Questa funzione restituisce un iteratore inverso costante che punta alla fine della stringa e non può essere utilizzato per modificare il contenuto a cui punta.
cred() Questa funzione restituisce un iteratore inverso costante che punta al precedente dell'inizio della stringa e non può essere utilizzato per modificare il contenuto a cui punta.

Algoritmo:

  1. Prova a ripetere la stringa utilizzando tutti i tipi di iteratori
  2. Prova la modifica dell'elemento della stringa.
  3. Visualizza tutte le iterazioni.

Esempio:

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)   

Produzione
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 

dove n è la dimensione della stringa

4) Funzioni di manipolazione:

Funzione Definizione
copy('array di caratteri' len pos)  Questa funzione copia la sottostringa nell'array di caratteri di destinazione menzionato nei suoi argomenti. Sono necessari 3 argomenti per la lunghezza dell'array di caratteri di destinazione da copiare e la posizione iniziale nella stringa per avviare la copia.
scambio() Questa funzione scambia una stringa con un'altra

Esempio:

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

Produzione
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 


Da leggere: Classe String C++ e sue applicazioni