So beenden Sie ein Programm wenn der Benutzer die Eingänge einen besonderen Charakter
ich bin curently dabei ein einfaches Programm, das aus einer while-Schleife, liest in zwei int-Werte und druckt diese dann aus. Meine Frage ist, wie kann ich das Programm beenden, wenn der Benutzer Eingaben der Art "|"? Hier ist diese kleine, super einfache Programm:
int main()
{
int var1 = 0;
int var2 = 0;
while(cin>>var1>>var2)
{
cout << var1 << " " << var2 << endl;
}
return 0;
}
Ich weiß, dass Sie definieren können, ein argument zu getline, die genau das macht, was ich will zu tun, aber ich weiß nicht, wie implementieren Sie diese in eine while-Schleife. Vielen Dank für die Hilfe.
Sind Sie Fragen, wie beenden die Schleife, wenn var1 oder var2 (nachdem er gelesen) enthalten das pipe-Zeichen? Ich vermute nicht, vielleicht beschreiben Sie, was Sie wollen, mit Beispiel-Eingabe im detail.
InformationsquelleAutor Raphael | 2011-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Schleife bereits verlassen, sobald jemand etwas istream kann nicht << in eine ganze Zahl. Jedenfalls zu beenden, die speziell auf |, würde ich die peek-Funktion, etwa so:
Es vermeidet die Verwendung von c-Stil-Eingang oder komplexe line-parsing.
Haben Sie versucht zu kompilieren?
cin.gut ist eine Funktion und sollte sein, cin.gut(). Sorry, ich schrieb es an die Spitze von meinem Kopf. Ich habe keinen Zugriff auf einen compiler in diesem moment :), ich ändere meine ursprüngliche post nun
Die Extraktion blockiert. Aber test
cin
nichtcin.good()
.Was ist der
if( c == | )
Teil?InformationsquelleAutor
Alles, was Sie tun müssen, ist zu prüfen, ob der Wert, der eingegeben wurde | in einer if-block und dann mit dem break-Schlüsselwort, um die Schleife zu stoppen.
Etwas in die Zeilen wie diese:
InformationsquelleAutor rzetterberg
Wie geschrieben, Sie ' ll beenden die Schleife, wenn der Benutzer
|
. Oderalles andere, das nicht interpretiert werden, als
int
(nachüberspringen von Leerraum).
Wenn Sie wollen mehr präzise Kontrolle, die Sie haben zu Lesen Sie Linie durch
Linie (und zum Parsen der Zeile), oder Zeichen für Zeichen (und bauen
die Werte).
InformationsquelleAutor James Kanze