Teoria Stringhe in C++

Una stringa è semplicemente un array di caratteri, ovvero una sequenza di caratteri terminante con uno zero binario (carattere terminatore della stringa: \0).

La gestione delle stringhe in C++ è facilitato da una serie di funzioni richiamabili dalla libreria string.

Questo tipo di dato consente la semplificazione della gestione dei dati alfanumerici.

Vediamo quali sono le tipiche operazioni che si possono fare su una stringa:

  • #include <string>: libreria da richiamare per utilizzare le stringhe
  • string stringa: dichiarazione di una stringa
  • string stringa=”Daniele Corti”: dichiarazione e inizializzazione di una stringa
  • string stringa=”Daniele\nCorti”: multiriga
  • length(): restituisce la lunghezza della stringa
  • if(nomeStringa.empty()): restituisce TRUE se la stringa è vuota, altrimenti FALSE
  • stringa3=stringa1 + stringa2: concatenazione di stringhe con l’operatore (+)
  • if(stringa1 ==stringa2): restituisce TRUE se le due stringhe sono uguali
  • cout<<stringa1[i]: accesso alla i-esimo carattere della stringa
  • insert(n, stringa1): inserimento della stringa1 nella n-esima posizione della stringa2
  • substr(start, numCaratteri): estrazione da stringa1 di nCaratteri a partire da start carattere
  • erase(start, numCaratteri): cancellazione di numCaratteri a partire da start caratteri
  • replace(start, numCaratteri, stringa1): a partire da start carattere inserisco numCaratteri di stringa1 in stringa2
  • find(StringaDaCercare, start): restituisce la posizione del primo carattere della StringaDaCercare in stringa a partire da start esimo carattere.
  • cin>>stringa1: input stringa senza spazi
  • getline(stringa1, numeroCaratteri): input stringa con spazi

Sappiamo che il tipo string non gestisce parole separate dallo spazio, ovvero se scriviamo questo:

string frase;cin>>frase;

e l’utente inserire una sequenza di caratteri contenenti spazi, nella variabile frase verrà salvata solo la prima parte della stringa preceduta dal primo spazio digitato.

Per risolvere questo problema possiamo utilizzare la funzione:

getline(cin,variabileStringa);

 

Esempio: