leere Eingabe/Enter akzeptieren
-
Moin,
ich möchte in C++ mehrere Strings einlesen, solange bis keine Eingabe mehr erfolgt/nur Enter gedrückt wird. Allerdings wird das Enter alleine nicht akzeptiert.
Hier im Forum habe ich folgenden Code gefunden:
scanf("%[^\n]s", string);Da das ganze jedoch in einer while-Schleife steht und dieser Code bei mehr als einer Anwendung sämtliche weitere Eingaben verweigert und stattdessen mit der ersten Eingabe füllt, funktioniert das nicht.
Hat jemand andere Lösungsvorschläge?
-
C++ oder C? Du fragst in C++, dein Codeschnipsel ist C. Vorgehensweise in beiden Sprachen: So lange Zeilen einlesen, bis eine Zeile leer ist.
-
Ja, C++ zu nutzen. Ist auch viel bequemer, sicherer und einfacher:
int main() { std::string s; while(std::getline(std::cin, s) && s.length()) { std::cout << s << '\n'; } }
-
int main() { for(std::string obj(" ");!obj.empty();getline(std::cin,obj)); }Ist ja aber eig. sinnlos.
Es geht ja auchint main() { std::vector<std::string> vec; for(std::string obj(" ");;vec.push_back(obj)) { getline(std::cin,obj); if(obj.empty()) break; } }P.S.: Wenn du im letzten Beispiel wieder ausgeben lassen möchtest, geht das so:
C++11:
for(const std::string& iter : vec) std::cout << iter << '\n';else
for(std::vector<std::string>::iterator iter(vec.begin()); iter != vec.end(); ++iter) std::cout << *iter << '\n';
-
Was passiert da, wenn ich dir eine Datei nach stdin pipe, die keine Leerzeilen enthält?
-
seldon schrieb:
Was passiert da, wenn ich dir eine Datei nach stdin pipe, die keine Leerzeilen enthält?
Ich versteh überhaupt nicht, worauf du hinaus willst. Wenn da ein Fehler ist, bitte-nur herein damit....