Eingegebener Text als Dateiname Speichern



  • Nabend,

    wie der Name schon sagt möchte ich gerne das der eingegebene Text als Dateiname abgespeichert wird.Jedoch würde ich gerne ein Dateiendung vordefinieren.
    z.b ".txt"

    Hier mein bisheriger Quelcode.
    Achtet bitte nicht auf (Deutsche)Rechtschreibfehler, Kommentare oder den Sinn des Programms Danke 🙂

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    int add (int x, int y, int z)
    {
        return (x+y+z);
    }
    
    int main ()
    {
        cout << "Hallo, Sie beginnen nun mit der Addition\n";
        int a, b, c, d;
        cout << "Wie viel EU haben sie in der Tasche?\n";
        cin >> a; // die 1. Zahl wird eingegeben
        cout << "Ziemlich wenig, aber machen wir weiter!Wie viel haben sie auf dem Konto\n";
        cin >> b; // die 2. Zahl wird eingegeben
        cout << "Ok....gut gut....wie viel Geld haben sie unterm Kopfkissen?\n";
        cin >> c; // die 3. Zahl wird eingegeben
        cout << "wir errechnen nun über wie viel Geld sie verfügen\n";
        d=add (a,b,c);
        cout << "Naja" << d << "EURO ist nicht viel...aber wollen wir doch mal ihre daten abspeichern \n"; // das Ergebniss wird Preisgegeben.
    
        ofstream dat_aus;
        string dateiname;
    
        cout << "Wir werden nun das Ergebniss abspeichern.\n";
        system ("PAUSE");
        cout << "geben sie den Namen / Pfad an unter dem Sie die Datei abspeichern 
        wollen\n";
        cin >> dateiname;
        cout << endl;
    
        dat_aus.open(dateiname.c_str(), ios_base::app) ;
    
        if(!dat_aus)
        {
            cout << "Datei konnte nicht geöffnet werden!";
            cout << endl;
            return -1;
        }
        dat_aus << "Name des Kunden ___";
        dat_aus << "verfügbarer Betrag____" << d;
        dat_aus << "hallo";
    
        dat_aus.close();
    
        system("PAUSE");
        return EXIT_SUCCESS;
    
    }
    

    Als Ergebnis bekomme ich ja nur das was ich in der 31. Zeile Eingebe.



  • Nach der Eingabe des Dateinamens:

    dateiname << ".txt"
    

    wäre z.B. eine Möglichkeit.



  • So könntest du es auch machen!

    cout << "geben sie den Namen / Pfad an unter dem Sie die Datei abspeichern wollen\n";
        cin >> dateiname;
        cout << endl;
    
        string dat_end(".txt");
        dateiname.append(dat_end); // ".txt" an Dateinamen anhängen
    
        dat_aus.open(dateiname.c_str(), ios_base::app) ;
    


  • Hallo

    Was natürlich nur korrekt ist wenn die Eingabe des Users ohne Erweiterung erfolgt. Deshalb sollte vor dem einfachen Änhängen geprüft werden ob bereits eine Erweiterung da ist, und diese entweder mit ".txt" ersetzen oder beibehalten. Dazu brauchst du nur die üblichen Methoden von std::string wie find und substr.

    bis bald
    akari



  • jo danke.Werde mich damit heute Abend auseinander setzen (bin auf der Arbeit).



  • @zero_gravity

    ich habe in der 32. Zeile

    dateiname << ".txt";
    

    eingeben mein Compiler antwortete frech:

    In function `int main()':
    32 no match for 'operator<<' in 'dateiname << ".txt"'

    Habe ich was Falsch gemacht?

    @EEK
    Das hat sofort gefunzt Wunderbar. 😮

    @akari

    Dazu brauchst du nur die üblichen Methoden von std::string wie find und substr.

    heiss das, dass substr und find Unterfunktionen von string sind ???

    Danke für alles 👍



  • lordcesarius schrieb:

    @zero_gravity

    ich habe in der 32. Zeile

    dateiname << ".txt";
    

    eingeben mein Compiler antwortete frech:

    In function `int main()':
    32 no match for 'operator<<' in 'dateiname << ".txt"'

    Habe ich was Falsch gemacht?

    Dafür musst du std::stringstream benutzen.

    lordcesarius schrieb:

    @zero_gravity
    @akari

    Dazu brauchst du nur die üblichen Methoden von std::string wie find und substr.

    heiss das, dass substr und find Unterfunktionen von string sind ???

    Danke für alles 👍

    Nein, keine Unterfunktionen, sonder Algorithmen.



  • jo, danke



  • Hallo

    Die Methoden die ich meinte sind in der Tat "Untermethoden" von std::string und keine freien Funktionen.

    bis bald
    akari



  • akari schrieb:

    Hallo

    Die Methoden die ich meinte sind in der Tat "Untermethoden" von std::string und keine freien Funktionen.

    bis bald
    akari

    Ja, sind es auch. Hab irgendwie nur find angeschaut und den Link zu Algos gepostet. 😉


Anmelden zum Antworten