Hilfe String problem
-
Ich mal wieder...
wenn ich:
cin >> String; // EIngabe ist "Hallo du wie gehts?"mache und dann
cout << String;tue
fehlt was...
Hallo wird ausgegeben, der Rest nicht.
Wenn ich statt
cin >> String; string String = "Hallo du wie gehts?";schreibe und dann ausgeber ist alles da...

Warüm?Wie kann ich das umgehen
-
Hallo,
Der Operator>> von istream ist für den Typen std::string so überladen, dass er immer nur bis zum nächsten Blank ließt. (Also bis zum nächsten Tabstopp, Newline, Space, etc.).
Wenn du eine ganze Zeile einlesen möchtest, verwendest du normalerweise die Funktion getline(). (http://www.cppreference.com/cppstring/getline.html).Gruß Caipi
-
Ja das mit dem überladen konnte ich mir schon irgendwie denken
getline() funzt einwandfrei
danke dafür
ihr seit echt klasse hier^^
thnx
EDIT jetzt habe ich ein anderes Prob:
getline(); wird einfach übersprungen:
string sName; string Satz; cin >> sName; ofstream dat_aus; dat_aus.open("Chat.txt", ios_base::out | ios_base::app); cout << "Nachricht: "; getline( cin, Satz); cout << Satz; dat_aus << Satz << endl; dat_aus.close();setze ich getline und cout direkt unter die String deklarationen geht es
-
Hallo,
Das liegt höchstwahrscheinlich daran, da nach dem cin >> sName; sich noch das '\n' im Puffer befindet. Dieses signalisiert der Funktion getline(), dass sie aufhören soll, weiter einzulesen => nichts wird eingelesen.Lösung: Schreibe vor die Zeile getline(cin, nachricht);
// Die Methode ignore() ignoriert und verwirft Zeichen aus dem Input-Buffer. // Im Beispiel ließt und verwirft ignore solange Zeichen, bis entweder 9999 // Zeichen ignoriert wurden oder ein '\n'-Zeichen eingelesen wurde. Siehe auch // http://www.cppreference.com/cppio/ignore.html cin.ignore(9999, '\n');Durch diese obige Zeile wird das '\n'-Zeichen aus dem Buffer gelöscht und getline() ließt nun so lange bis du Enter drückst (wodurch ein '\n'-Zeichen eingelesen wird, welches die Funktion getline() veranlasst, das Einlesen abzubrechen...)
Gruß Caipi
-
Kool danke das hat das Problem gelöst...ich hoffe ich komme auch mal dahin soviel zu wissen^^
Danke vielmals