2009-10-18 16 views
16

Desidero leggere da cin in C++ dalla posizione corrente fino a un carattere di nuova riga in una stringa. I caratteri da leggere possono includere spazi. Il mio primo passaggio non riesce perché si ferma sul primo spazio:Come leggere cin con spazio fino a un carattere di nuova riga?

string result; 

cin >> result; 

Se viene dato cin:

(cd /my/dir; doSometing)\n 

Il risultato variabile ottiene solo:

(cd 

penserei che dovrei essere in grado di utilizzare i manipolatori del flusso per raggiungere questo obiettivo, ma i salti non erano del tutto corretti in quanto restituisce i ritorni a capo con spazi e tabulazioni, inoltre sembra che quello sia lo spartito degli spazi iniziali.

Forse ho bisogno di utilizzare streambuf qualcosa del genere?

streambuf buf; 

cin >> buf; 

risposta

21
std::string str; 
std::getline(std::cin, str); 
+3

Nota (dato che ho appena sono bruciato da questo): non sembra funzionare con AIX 5.1. Ho dovuto usare 'fgets' definito in stdio.h. – Pete

Problemi correlati