Heim > Artikel > Backend-Entwicklung > Warum wird beim Speichern von Benutzereingaben in einem Vektor nur die erste Zahl gezählt?
Benutzereingaben in einem Vektor speichern: Eine umfassende Anleitung
In dieser Anfrage versucht ein Benutzer, mehrere Zahlen in einen Vektor einzugeben und anschließend mit einem Funktionsaufruf zählen. Der unten bereitgestellte Code stellt ein Problem dar, bei dem nur die erste Zahl gezählt wird:
<code class="cpp">template <typename T> void write_vector(const vector<T>& V) { cout << "The numbers in the vector are: " << endl; for(int i=0; i < V.size(); i++) cout << V[i] << " "; } int main() { int input; vector<int> V; cout << "Enter your numbers to be evaluated: " << endl; cin >> input; V.push_back(input); write_vector(V); return 0; }</code>
Der Übeltäter liegt in der Tatsache, dass derzeit nur eine einzige Ganzzahl vom Benutzer gelesen wird. Um dies zu beheben, ist eine Schleife erforderlich.
<code class="cpp">while (cin >> input) V.push_back(input);</code>
Diese Schleife ruft kontinuierlich ganze Zahlen von der Standardeingabe ab, bis keine Eingabe mehr verfügbar ist. Der Eingabevorgang wird abgeschlossen, wenn cin das Ende der Datei (EOF) erkennt oder auf einen nicht ganzzahligen Wert stößt.
Alternativ kann ein Sentinel-Wert verwendet werden, der den Nachteil hat, dass der Benutzer diesen bestimmten Wert nicht eingeben kann . Zum Beispiel:
<code class="cpp">while ((cin >> input) && input != 9999) V.push_back(input);</code>
In diesem Szenario werden Eingaben gesammelt, bis der Benutzer 9999 eingibt (oder eine andere Bedingung auslöst, die cin ungültig macht), woraufhin die Schleife endet.
Das obige ist der detaillierte Inhalt vonWarum wird beim Speichern von Benutzereingaben in einem Vektor nur die erste Zahl gezählt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!