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. 😞


Anmelden zum Antworten