Ich möchte den Benutzer in die Lage versetzen, mehrere Zeilen von Zeichenfolgen einzugeben. Ich habe es mit einer for-Schleife versucht, aber bisher wird nur die letzte Zeile zurückgegeben.
Beispielsweise gibt der Benutzer die folgenden Zeichenfolgen und Zeilen ein. string str;
getline(cin, str);
oder eine Schleife for(i=0;i<n;i++){
getline(cin, str);}
Dies sind die Eingaben, die der Benutzer eingibt
Basketball Baseball Fußball // Linie 1
Hockey Soccer Boxing "// Zeile 2
Jetzt möchte ich diese beiden Zeilen an einem Punkt zurückgeben können. Ich weiß nicht, wie ich das machen soll. Schwieriger finde ich es auch herauszufinden, ob der Benutzer nur eine, zwei oder drei Zeilen eingeben kann. Ich verstehe, wie man mit einem Hut umgeht cases
, aber ich möchte jetzt wissen, ob es einen einfacheren Weg gibt, der nicht so chaotisch aussieht.
Warum verwenden Sie nicht std::getline
eine while-Schleife, sodass die Schleife nach Eingabe der leeren Zeile wie folgt beendet wird:
#include <iostream>
#include <string>
#include <vector>
int main() {
std::string line;
std::vector<std::string> lines;
while (getline(std::cin, line) && !line.empty()) {
lines.push_back(line);
}
std::cout << "User has entered " << lines.size() << " lines" << std::endl;
for (auto const& l : lines) {
std::cout << l << std::endl;
}
std::cout << "... End of program ..." << std::endl;
return 0;
}
Sie können jede Zeile speichern, die der Benutzer in den std::vector
Container eingegeben hat, und diese Zeilen später erneut abrufen.
Mögliche Ausgabe:
First line
Second line
User has entered 2 lines
First line
Second line
... End of program ...
AKTUALISIEREN
Wenn Sie dem Benutzer die Eingabe von nur 2 Zeilen ermöglichen möchten und die for-Schleife verwenden möchten, können Sie Folgendes tun:
#include <iostream>
#include <string>
#include <vector>
int main() {
std::string line;
std::vector<std::string> lines;
for (int i = 0; i < 2; i++) {
std::getline(std::cin, line);
lines.push_back(line);
}
std::cout << "User has entered " << lines.size() << " lines" << std::endl;
for (auto const& l : lines) {
std::cout << l << std::endl;
}
std::cout << "... End of program ..." << std::endl;
return 0;
}
Und die Ausgabe könnte sein:
First line
Second line
User has entered 2 lines
First line
Second line
... End of program ...
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen