In variable Textdateien speichern!



  • Huhu!

    Ich habe ein Problem mit dem Speichern in Dateien.
    Ich kann zwar eine Variable in einer Datei ablegen und lesen über:

    #include <iostream>
    #include <fstream>
    
    int main()
    {
       using namespace std;
       ofstream file;
       int eingabe=200;
       file.open("test.txt");
       file << eingabe;
       file.close( );
       return 0;
    }
    

    Aber das soll nun auch für variable Textdateien gehen. Das heisst ich möchte nicht im Quelltext sagen, wohin das abgespeichert werden soll, sondern das soll sich aus angegebenen Benutzerdaten ergeben. Ich dachte an:

    #include <iostream>
    #include <fstream>
    
    int main()
    {
       using namespace std;
       ofstream file;
       int eingabe=200;
       string eing="Test1.txt";
       file.open(eing);
       file << eingabe;
       file.close( );
       return 0;
    }
    

    Wobei der String "eing" nun über ein cin-Befehl frei verändert werden kann.
    zB. :

    cout << "Dein Name: ";
    cin >> eing;
    eing+=".txt"
    

    Aber er sagt mir wenn ich so eine Variable in file.open() setze:

    no matching function for call to `std::basic_ofstream<char, std::char_traits<char> >::open(std::string&)'

    Weiß mir jemand zu helfen? Ich hoffe ich habe mein Problem deutlich gemacht, ich bin noch ziemlich neu in C++.



  • fstream::open() erwartet (aus historischen Gründen) keinen std::string, sondern nur char* als Dateiname - den mußt du aus dem String herausholen:

    file.open(eing.c_str());
    


  • Laut Referenz erwartet "open" einen const char*. Also einfach eing.c_str() 😉



  • Wohoo! Dankeschön, so einfach kann es sein. Ich komme aus einer anderen Programmiersprache und bin daher vollkommen verwirrt, warum er meinen ersten Ansatz nicht genommen hat, der für mich eigentlich total sinnig erscheint. Tja, wenn das historische Gründe hat, dann ist das wohl so. 🙂 *endlich weitermachen kann*


Anmelden zum Antworten