3D e 3E SIA: inserire le stringhe con gli spazi in Cpp



La funzione getline() 

La funzione getline() legge dati di tipo stringa linea per linea da uno stream di input. 

È un esempio di funzione non membro per la gestione delle stringhe, in quanto non appartiene ai metodi della classe string. 

L’uso più comune di questa funzione riguarda la possibilità di effettuare l’input da tastiera di stringhe che contengono spazi bianchi, per esempio l’acquisizione del cognome e del nome di una persona oppure il titolo di un libro con un’unica variabile stringa. 

Con l’istruzione cin >>, infatti, l’operazione di input viene conclusa quando si inserisce uno spazio bianco oppure una tabulazione oppure il ritorno a capo. 

La sintassi generale della funzione è la seguente: getline(stream di input, stringa, delimitatore); 

La funzione legge dallo stream di input una sequenza di caratteri copiandoli nella stringa indicata come secondo parametro: l’operazione si conclude quando il numero dei caratteri letti è uguale alla dimensione prefissata per la stringa oppure quando il carattere letto è uguale al delimitatore indicato come terzo parametro. 
Se non specificato (per default), il delimitatore è il carattere ‘\n’, cioè il ritorno a capo (newline). 

Per esempio, la seguente istruzione consente di acquisire da tastiera (flusso di input cin) il titolo di un libro nella stringa titolo; il titolo può anche contenere spazi bianchi: string titolo; getline(cin, titolo); cout << titolo << endl;

Esempio senza vettori:

#include <iostream> 

#include <string> 

using namespace std; 

int main() 

{

string parola;

getline(cin, parola); 

cout << parola << endl;

return 0;

}

Esempio con i vettori:

#include <iostream> 
#include <string> 

using namespace std; 

int main() 

{
int i;
string citta[3];
float polveri[3];
for (i=0; i<3; i++) {
cout << "inserisci la citta'  "   << endl;
getline(cin, citta[i]);
}
for (i=0; i<3; i++) {
cout << "inserisci le polveri  "   << citta[i]<<endl;
cin >>polveri[i];
}
for (i=0; i<3; i++) {
cout << "citta '  "   << citta[i]<< "polveri   "<< polveri[i]<<
endl;
}

return 0;


}

Esercizio:

Gli autori e i titoli di un insieme di libri sono memorizzati in due array di stringhe. Dopo aver inserito da tastiera i dati negli array, fornito da tastiera il nome di un autore, il programma deve visualizzare l’elenco dei titoli dell’autore richiesto oppure un messaggio nel caso in cui l’autore richiesto non sia presente tra i libri esaminati.

fonte: https://www.edatlas.it/scarica/1845/Capitolo6/ContenutiDigitali/6FunzioneGetline.pdf

Commenti