cin.get
-
hallo leute!
ich will ein spezielles kalenderprogramm für unsere firma schreiben, bei dem ich auch eine speicherfunktion brauche. ich bin ein anfänger, deshalb hoffe ich auf hilfe (vielleicht ist es für euch ja ganz einfach).
also, ich will den dateinamen angeben (dies is jetzt n extra programm, bei dem ich nur das teste, ums später ins "große" programm einzubetten) und danach den text, der dann in die datei gespeichert werden soll. ich weiß nicht, vielleicht bin ich zu blöd dafür, aber der compiler meldet keinen fehler, nur in der ausgabe kann ich dann den dateinamen eingeben und schwuppdiwupp sitz ich schon an der letzten zeile des programms, ohne den text eingegeben zu haben! wer weiß rat?#include <iostream> #include <conio.h> #include <fstream> using namespace std; void main() { char text[101]; char filename[31]; cout << "Geben Sie den Dateinamen an:\n"; cin.get(filename, 30); cout << "\n\nGeben Sie den Text ein, der in der Datei " << filename << " gespeichert werden soll:\n"; cin.get(text, 100); ofstream out(filename); out << text; cout << "\n\nFolgendes wurde in die Datei " << filename << " gespeichert:\n" << text << endl; out.close(); getch(); };
danke im voraus,
andy
-
Vom ersten cin.get() bleibt ein newline übrig, das dann vom zweiten eingelesen wird. Deswegen hast Du keine Chance, was anderes einzugeben.
Entweder benutzt Du direkt getline() (da sollte das Problem nicht auftreten), oder Du setzt vor das zweite cin.get() die Zeile cin.ignore(cin.rdbuf()->in_avail());. Damit werden alle noch übriggebliebenen Zeichen im Eingabepuffer einfach ignoriert.
-
das hab ich mir auch schon gedacht, nur weiß ich nicht genau, was mit dem newline direkt gemeint ist?! dann nehm ich wohl getline() - mal schauen, wie ich dich das hinkriege. allerdings muss ich mich dann mal in der grammatik erkunden.
danke,
andy