Ich versuche, eine einfache Aufgabe zu machen, Leerzeichen getrennt von der Konsole in ein vector<int>
zu lesen, aber ich verstehe nicht, wie ich das richtig machen soll.
Das habe ich bis jetzt gemacht:
%Vor% Dies erfordert jedoch, dass der Benutzer ein ungültiges Zeichen (wie a
) drückt, um die while
-Schleife zu brechen. Ich will es nicht.
Sobald der Benutzer Zahlen wie 0 2 3 4 5
eingibt und Enter
drückt, möchte ich, dass die Schleife unterbrochen wird. Ich habe versucht, auch istream_iterator
und cin.getline
zu verwenden, aber ich konnte es nicht funktionieren.
Ich weiß nicht, wie viele Elemente der Benutzer eingeben wird, daher verwende ich vector
.
Bitte schlagen Sie den richtigen Weg vor, dies zu tun.
Um auf die Antwort von jonsca näher einzugehen, hier ist eine Möglichkeit, unter der Annahme, dass der Benutzer gültige Ganzzahlen treu eingibt:
%Vor% Dies liest und analysiert eine gültige Zeile mit ganzen Zahlen von cin
korrekt. Beachten Sie, dass dies die freie Funktion getline
ist, die mit std::string
s arbeitet, und nicht mit istream::getline
, die mit C-Style Strings arbeitet.
Dieser Code sollte Ihnen helfen, er liest eine Zeile in eine Zeichenkette und iteriert dann darüber hinaus alle Zahlen.
%Vor%Vielleicht ist es auch hilfreich zu wissen, dass Sie ein EOF stimulieren können - Drücken Sie 'ctrl-z' (nur Windows, unixartige Systeme benutzen ctrl-d) in der Befehlszeile, nachdem Sie mit Ihren Eingaben fertig sind. Sollte Ihnen helfen, wenn Sie kleine Programme wie dieses testen - ohne ein ungültiges Zeichen eingeben zu müssen.