cin.getline() Probleme Brauche hilfe!!!
-
Hi leute ich habe hier eine kleine Funktion gecodet und ich habe da ein riesen Problem! die funktion geht bis zu dem cin.getline() befehl Perfect aber wenn es darauf trifft (cin.getline()) überspringt sie es und das programm schreibt nix in die Datei was könnte ich da tun!!!
Ich wollte das man durch den getline befehl einen string in einen char arrey einlesen und den arrey dann in eine Datei schreiben!!! Hier der Code:int NeueNachricht() { char text[200]; char _delim = '\n'; cout << "Geben Sie jetzt ihre nachricht ein (nicht über 200 zeichen),\n" "wenn sie mit ENTER bestätigen wird der Text geschichert\n" "und die Datei wird erzeugt !\n\n"; cin.getline(text, 200, _delim); ofstream nachricht("LETTER.txt", ios::out | ios::trunc ); cout << "\n\n" << text << "\n\n"; nachricht << text ; cout << "!!! Die Datei wurde erzeugt !!!\n\n"; return 0; }
bitte helft mir es ist wichtig!
-
Wo genau das Problem in deinem Code is kann ich dir nicht sagen, ich vermute es liegt an dem _delim. Alternative kann es aber auch dein ofstream object sein.
Probier mal diesen Code, mit fstream, der bei mir funktioniert ...
#include "iostream.h" #include "fstream.h" char text[200]; cout << "Test\n\n"; cin.getline(text, 200); cout << "\n\nIhre Nachricht" << text; fstream nachricht; nachricht.open("test.txt", ios::out); nachricht << text; return 0;
MFG Blade
-
Hmm,
kann so keinen Fehler finden und läuft bei mir auch ohne Probleme. Wenn man
ein implizites close
nachricht.close();
einfügt erhöht das bestenfalls ein wenig die Lesbarkeit, aber nicht die Funktionalität, da das close automatisch beim verlassen der Funktion aufgerufen wird. Aber immerhin, versuche es mal.Gruß
Gerhard
-
also als ich das Programm das erste mal gestartet habe ging es und alle anderen male kam der Fehler auf den ich oben beschrieben habe! ich habe keine Ahnung warum es das cin.getline überspringt!!!
Naja wenn euch noch was einfällt bite Posten!
MFG
-
... müsstest du nicht eigentlich die Methode .get() verwenden wenn du einen Parameter _Delim übergibst?? .getline() implementiert doch schon "\n" als Ende des Lesevorgangs ... oder??? Daran müsste dann doch der Fehler liegen.
-
Nein das ist nicht der Fehler denn ich habe vorhin den Code ohne das ausprobiert und es ging immer noch nicht !
Ich habe es so:
cin.getline(text, 200);
cin.getline(text, 200, '\n');
cin.getline(text, 200, _delim);
auspribiert!Alle vareanten gehen nicht es wird immer übersprungen! Bitte findet sich denn keiner der das Geheimnis lösen kan????
ich glaube an fstream liegt das fanze auch nicht ich habe nähmlich alle vareanten schon ausprobiert die hier in den Posts dargestellt wurden!!!!Hilfe!!!
-
hi,
such hier mal mit der suchfunktion nach "getline" und einem thread mit dem titel "Probleme mit getline(cin, ...)" da hatte jemand irgendwie das gleiche problem
kann leider den link hier nicht posten, entweder geht das nicht oder ich bin zu doof dazu
vielleicht hilft es
-
Was passiert eigentlich hier : nachricht << text ;
Ist das kein Fehler. Fehlt da ein Gleichheitszeichen oder cout nicht???
-
Also ich danke allen die mir geholfen haben aber der letzte war ein echter Volltreffer! ich habe ihn früheren beiträgen gesucht und einen der gleichen art entdeckt und so wie es aussieht hat das getline prinzip eine schwachstelle nämlich das men nicht gleich 2 abfragen hintereinander damit machen kann!
aber wenn man diese funktion:cin.ignore(cin.rdbuf()->in_avail());
vor den zweiten getline befehl setzt klappt es perfekt!
Vielen dank für eure hilfe.
MFG