2016-04-08 5 views
-1

Ich versuche, Datei-E/A in C++ zu lernen. Ich habe eine Reihe von Variablen wie töten, Tod, Hilfe, Ergebnis, Notizen und ich möchte sie in eine Textdatei eingeben. Ich habe Tutorials gesehen, wo sie cin in einer while-Schleife verwenden, wieC++ Wie überprüft man, ob cin in einer While-Schleife-Bedingung nicht gleich ist?

while (cin >> kill >> death >> assist) { 
file << kill << death << assist ; } 

aber ich möchte der Benutzer schreiben in „Fertig“, wenn sie ihre Eingabe erfolgt eingeben. ich in Python wissen, können Sie so etwas wie

while (input != "done"): 
    //code// 

tun kann ich etwas ähnliches?

while (cin >>() != "done") { 
cin >> kill >> death >> assist >> notes ; 
file << kill << death << assist << notes ; } 
+3

Zum einen versuchen Sie 'Operator >>'. – WhozCraig

Antwort

1

Sie können mehrere Bedingungen mit den logischen Operatoren AND und OR verwenden.

Sie können auch std::getline verwenden, um eine Zeile zu lesen, und dann eine verwenden, um die Eingabe zu analysieren.

Zum Beispiel so etwas wie:

std::string input; 
while (std::getline(cin, input) && input != "done") 
{ 
    std::istringstream is(input); 
    is >> kill >> death >> assist; 
    ... 
} 

Der Ausdruck in der Bedingung eine Weile Zeile liest, überprüft, dass es keine Fehler war oder End-of-Datei beim Lesen, und dann prüfen, ob der Eingang war nicht "done" .

+0

Vielen Dank, ich werde versuchen, und lesen Sie auf Eingabe String-Stream. –

+1

Ich empfehle immer die Eingabe zu überprüfen, bevor Sie die Variablen verwenden, in die Sie hineingelesen haben, wie in 'if (is >> kill >> death >> assist)' * ... benutzen Sie sie ... * '; else' * ... handle die Fehler/Eingabe Zeile enthielt keine töten, Tod und assistieren ... * ';'. –

+0

@TonyD yeah Ich werde sicherstellen, dass die Eingaben tatsächlich so sind, wie sie sein sollen, aber ich wollte nur wissen, ob es möglich ist, eine bedingte Anweisung mit cin innerhalb einer while-Schleife zu schreiben, weil keiner der Tutorials das verwendet hat Methode (vielleicht weil es nicht effizient ist.). –