getline(cin,input) mit mehreren Zeilen? (C++)
Ich habe ein Problem hier, die geben mir eine harte Zeit. Also, ich habe noch etwas zu Lesen in dem format [bitte Lesen Sie sich den Körper als auch, um zu verstehen mein Problem ein wenig besser]:
TITLE
The text is actually from a file being redirected
to input stream via piping in linux bash. I cannot
use ifstream or anything other than some form of cin,
of which I believe getline to be the most useful.
etc.
Speziell, was mir eine harte Zeit ist das Leerzeichen zwischen TITEL und Körper. Ich kann nicht scheinen zu denken, ein Weg, um zu umgehen, dass die Verwendung von getline(cin,string).
Die besten, die ich mir ausgedacht habe:
while(inputString.size() != 0)
getline(cin,inputString);
//process string
... aus dem Fenster geworfen wird mit der oben erwähnten leere Zeile.
Irgendwelche Ideen, Jungs?
Dank!
InformationsquelleAutor assignment_operator | 2013-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, die wirkliche Frage hier ist Ihre Logik. Ihre Eingabe enthält die beiden leeren und nicht-leeren Zeilen, wenn Sie so wollen, zu Lesen, alle von Ihnen, Sie sollten sich nicht darauf verlassen, dass die Länge der Linie. Dies kann durch die Prüfung der stream zurückgegeben
std::getline
:Loops liest aus
cin
Zeile für Zeile und Stoppt am Ende der Eingabe.nicht nur ändert das stream-Objekt, aus dem gelesen werden, es gibt auch es. Wie erwähnt, hier, ein stream-Objekt, das getestet werden kann Validität durch Gießen Sie es auf ein
void*
Zeiger (oder eine explizitebool
seit C++11). Sie erhalten einen null-Wert (false
), wenn es einen lese-Fehler, e ist.g keine Daten mehr im Strom.Ahhh, OK, das macht viel mehr Sinn jetzt. Danke, ich Schätze Ihre Zeit und Hilfe.
InformationsquelleAutor Eitan T
Sollte
Tragen Sie auf Lesen, während der string hat die Größe 0.
Für zusätzliche Klarheit versuchen, diese stattdessen
Leider habe ich anfangs verpasst, die wichtigsten Fehler in Ihrem code, die, die Sie verwendet
!=
nicht==
finden Sie die Antwort bearbeitet.leider ist der code beendet nach der ersten Zeile, da TITEL != Größe 0. Nochmals danke, aber!
Dann haben Sie die while-Schleife falsch. Scheint, dass ich falsch verstanden, dein problem, es war eher basic als ich realisiert.
InformationsquelleAutor john