Fragen zu fstream



  • Hallo Leute!

    Ich hab es glaub ich vor etlicher Zeit schonmal gefragt, aber keine richtige Antwort bekommen!
    Darum Frag ich hier und heut nocheinmal!

    Ich möchte in einem Programm Einträge verfassen, welche später gespeichert und eventl wieder gelesen werden können!

    So sieht es wie folgt aus:

    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
      //Varibalen  Deklinierung + Initalisierung  
      int auswahl;
      char eintrag[1000], output[1000];
    
      //Anfangstext
      cout << "Hallo!" << endl;
    
      cout << "Was wollen Sie tun?" << endl;
      cout << endl;
      cout << "Eintrag anlegen (1)" << endl;
      cout << "Eintrag lesen (2)" << endl;
      cout << endl;
    
      cin >> auswahl;
    
            //Neuen Eintrag anlegen
            switch(auswahl == 1)
            {        
              case 1:
    
                system("cls");
    
                ofstream file;
                file.open("Test.txt"); //legt eine Datei an
    
                cout << "Sie koennen jetzt Ihren Eintrag hinzufuegen: (Bitte nicht mehr als 1.000 Zeichen)" << endl;
                cout << endl;
    
                cin >> eintrag;
    
                file<< eintrag <<endl; //schreibt in die Datei hinein
    	      	file.close();          //schließt die Datei
    
             //Eintrag lesen
          	 //case 2:
    
          	     //Hier soll der geschriebene Eintrag ausgegeben werden
          	     //Leider hab ich totale Keinen Idde wie ich das mache! :(
    
             } // switch-case-klammer    
    
       cin.get();
       return 0;
       }
    

    wer den Text überflogen hat, hat sicher mein Problem erkannt...

    Ich hab schon eine ganze Weile versucht den Text, welcher geschrieben wurden, wieder im Programm ausgeben zu lassen... ich bekomm das einfach nicht hin! 😡

    Kann mir jemand helfen?



  • Es heißt switch(auswahl). Desweiteren rate ich dir zu std::string anstatt zu char-Arrays.

    Edit: Achso, du liest den Eintrag mit einem ifstream aus.

    ifstream in("file.txt");
    string line;
    getline(in, line);
    


  • wenn ein stream nur eine Datei behandelt, ist es leichter diese Datei direkt im konstruktor anzugeben, also:

    ofstream file("Test.txt");
    

    der destruktor kümmert sich automatisch um das close.
    open und close sind nur bei den c varianten der Dateibehandlung notwendig, die Destruktoren der klassen können einem schon einiges an Arbeit abnehmen.



  • ÄH.... sorry das ich nicht so schenll Antworten könnte, mein Internet war kaputt...

    So... zu meiner Frage...

    Statt diesen

    char eintrag[1000], output[1000];
    

    soll ich also einen String benutzen... okay!

    Aber das mit dem Aufrufen probier ich gleich mal!

    Kann mir mal jemand mal sagen was dieses "getline" bringt? Da hab ich schon öfters mal im zusammenhang mit Strings gesehn!

    Danke!



  • Ehm jo mein Internet geht gleich auch kaputt:P
    Ehm also std::getline ließt bis zum angegeben Terminierungszeichen ein. Nicht bis zum nächsten Leerzeichen 😛


Anmelden zum Antworten