Eine schnelle Art und Weise, dies zu lösen, ist die äußere Schleife zu brechen, wenn eine Leerzeile von der Konsole eingeben:
while (getline(cin, input))
{
if (input == "")
break;
...
}
Hinweis: einige Implementierung geben einen Wagenrücklauf am Ende der Zeile in der getline zurück, es streift nur die neue Zeile (Zeilenvorschub)Wie gesagt, dies ist eine sehr einfache und schnelle Möglichkeit, einen Ausgang aus Ihrer Endlosschleife zu machen, aus Sicht des Anwenders kann er/sie Zahlen eingeben, die durch Leerzeichen, Tabulatoren, Enter oder beliebige Kombinationen und. Getrennt sind Ihr Vektor wird gefüllt, bis der Benutzer eine leere Zeile eingeben.
Ihr Code wie folgt aussehen:
#include <string>
#include <vector>
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
vector<int> all;
string input;
while (getline(cin, input)) {
if (input == "")
break;
int number;
stringstream ss(input);
while (ss >> number) {
all.push_back(number);
}
}
// Here the vector "all" has any numbers entered by user
return 0;
}
Gehen Sie mit dem zweiten Beispiel und geben Sie eine EOF-Zeichen auf der Konsole (common EOF Zeichen Strg-D oder Strg-Z). –