2009-10-18 7 views
16

Ich möchte von Cin in C++ von der aktuellen Position bis zu einem Newline-Zeichen in eine Zeichenfolge lesen. Die zu lesenden Zeichen können Leerzeichen enthalten. Mein erster Pass schlägt fehl, da es auf dem ersten Platz hält:Wie liest man Cin mit Whitespace bis zu einem Newline-Zeichen?

string result; 

cin >> result; 

Wenn cin gegeben:

(cd /my/dir; doSometing)\n 

Die Variable Ergebnis bekommt nur:

(cd 

Ich würde denken, ich sollte in der Lage, Stream-Manipulatoren zu verwenden, um dies zu erreichen, aber die Skipws war nicht ganz richtig, es wirft Wagenrückläufe mit Leerzeichen und Tabs, und es klingt wie für führende Whitespace übersprungen werden soll.

Vielleicht muss ich streambuf so etwas verwenden?

streambuf buf; 

cin >> buf; 

Antwort

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

Hinweis (da ich habe gerade durch diese verbrannt): Erscheint nicht mit AIX 5.1 zu arbeiten. Ich musste 'fgets' verwenden, die in stdio.h definiert sind. – Pete