Anfängerfrage zur Eingabe
-
Jop müsste gehen, aber wenn er die Konsole schliessen sollte ohne dir vorher dei Ausgabe angezeigt zu haben, dann solltest du doch besser noch ein cin.sync( ); nach getline schreiben.
Gruß Tobi.
Frohen 2. Weinachtstag :xmas1:
-
Wie "nicht hinbekommen"? Bei mir funktioniert das bestens.
#include <iostream> #include <string> int main() { std::string street; std::cout << "Street: "; std::getline(std::cin, street); std::cout << street << std::endl; }
-
danke erstmal für die Antwort

aber bei der Ausführung wird nun einfach die Eingabe von der Straße übersprungen,
obwohl ich es genau probiert habe ...
hatte auch mal cin.getline probiert, genau das gleiche problem ...
-
Der von mir gepostete Quelltext funktioniert in der Form wie er ist. Der Fehler bei dir muss also davor liegen. Leider hab ich auch dieses Jahr wieder nicht die gewünschte Glaskugel geschenkt bekommen, weshalb ich dich bitten muss ein wenig mehr Code rauszurücken.
-
hehe
wollte grade schonmal meine code posten
danke nochmal!int add() { cout << "Eintrag hinzufuegen!\n\n"; cout << "\nVorname eintragen: "; cin >> vname; cout << "\nNachname eintragen: "; cin >> nname; string strasse; cout << "\nStrasse eintragen: "; getline(cin, strasse); cout << "\nHausnummer eintragen: "; cin >> hnr; cout << "\nStadt eintragen: "; cin >> stadt; cout << "\nPostleitzahl eintragen: "; cin >> plz; std::ofstream outfile; outfile.open("test.txt", ios::app); outfile << "Eintrag " << y << std::endl; outfile << "Vorname: " << vname << std::endl; outfile << "Nachname: " << nname << std::endl; outfile << "Strasse: " << strasse << std::endl; outfile << "Hausnummer: " << hnr << std::endl; outfile << "Stadt: " << stadt << std::endl; outfile << "Postleitzahl: " << plz << std::endl; outfile << "\n"; outfile.close(); return menu(); }
-
das komische ist, wenn ich die vorherige eingabe, auch einfach mal mit einer Eingabe von "Test Test" speise, kommt als ergebnis:
Nachname: Test
Strasse: TestObwohl ich nichtmal für Strasse etwas eingeben konnte ...
-
Du musst nach jedem cin die übrigen Zeichen aus dem Eingabepuffer entfernen.
#include <iostream> #include <string> #include <limits> std::istream& clear(std::istream& in) { in.clear(); in.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); return in; } int main() { std::string vname, nname, strasse, hnr, stadt, plz; std::cout << "Vorname: "; std::cin >> vname; clear(std::cin); std::cout << "Nachname: "; std::cin >> nname; clear(std::cin); std::cout << "Strasse: "; std::getline(std::cin, strasse); std::cout << "Hausnummer: "; std::cin >> hnr; clear(std::cin); std::cout << "Stadt: "; std::cin >> stadt; clear(std::cin); std::cout << "Postleitzahl: "; std::cin >> plz; clear(std::cin); }
-
nen cin.sync( ) sollte auch nicht fehlen nach jeder Texteingabe.
-
vielen Danke

jetzt funktioniert es! Da wäre ich aber nicht wirklich von alleine draufgekommen ^^. Hat mir sehr weitergeholfen, danke nochmal und noch ein frohes Fest!
-
T0bi schrieb:
nen cin.sync( ) sollte auch nicht fehlen nach jeder Texteingabe.
Was macht sync() denn, was cin.ignore(numeric_limits<streamsize>::max(), '\n') nicht macht? Ich kann sync auch in keiner C++-Referenz finden.
-