Verständnisfrage zu cin.get
-
Hallo, vielleicht kann mir hier jemand erklären warum "cin.get" so nicht funktioniert. Ich grübel darüber schon die ganze Zeit, "cin >> inc" funktioniert ja allerdings möchte ich mehr als bis zum ersten Leerzeichen in die Textdatei schreiben. Hat das möglicherweise etwas mit dem char Array zu tun?
Vielen Dank.#include <iostream> #include <fstream> using namespace std; int main (int argc, char *argv[]) { int auswahl; fstream f; char inc[55]; cout << "[1] Eingabe in Textdatei speichern" << endl << endl; cout << "Deine Eingabe: "; cin >> auswahl; switch ( auswahl ) { case 1: cout << "Deine Eingabe: "; // Warum geht hier cin.get nicht? cin.get (inc, 54); //cin >> inc; f.open("config.ini", ios::out); f << inc << endl; f.close(); exit(1); break; default: cout << "Falsche Eingabe."; exit(2); } return 0; }
-
cin.get() liest AFAIK nur ein einzelnes Zeichen ein, du willst offensichtlich eine Zeichenkette einlesen, mach das über getline(cin, inc)
Btw. Du solltest sowieso std::string verwenden.
-
Vielen Dank für die Antwort.
Ich werd es mal mit string ausprobieren.
Aber ich kann mit cin.get (inc, 54); eine komplette Zeile einlesen, leider nur außerhalb der switch Anweisung, aus irgendeinem Grund funktioniert das innerhalb nicht.
So funktioniert die Eingabe einer ganzen Zeile:#include <iostream> #include <fstream> #include <string> using namespace std; int main (int argc, char *argv[]) { int auswahl; fstream f; char inc[55]; cin.get (inc, 54); f.open("config.ini", ios::out); f << inc << endl; f.close(); exit(1);Edit: Ich habe das selbe mal mit string und getline ausprobiert, ich kann zwar etwas eingeben, allerdings wird nichts in der Textdatei gespeichert.
