Wie kann ich Leerzeichen getrennt von der Konsole lesen?

7

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.

    
Asha 31.03.2011, 08:45
quelle

5 Antworten

11

Verwenden Sie ein getline kombiniert mit einem istringstream , um die Zahlen zu extrahieren.

%Vor%     
jonsca 31.03.2011, 08:50
quelle
7

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.

    
templatetypedef 31.03.2011 08:53
quelle
1

Dieser Code sollte Ihnen helfen, er liest eine Zeile in eine Zeichenkette und iteriert dann darüber hinaus alle Zahlen.

%Vor%     
Marek Sapota 31.03.2011 08:55
quelle
1

Fragen Sie den Benutzer nach jeder Nummer oder nehmen Sie die Anzahl im Voraus und führen Sie die Schleife entsprechend durch. Keine gute Idee, aber ich sah das in vielen Anwendungen.

    
Dhiraj 31.03.2011 09:03
quelle
1

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.

    
Schnommus 31.03.2011 09:14
quelle

Tags und Links