Dateiendung bestimmen



  • EnERgYzEr schrieb:

    std::string Dateiname;
    
    cout << "Bitte geben Sie einen Dateinamen ein.";
    cin >> Dateiname;
    
    std::ofstream Ausgabe(Dateiname+".txt");
    

    Jetzt muss die Konkatenation nur noch in Klammern gesetzt und ein .c_str() daran
    gehangen werden, dann funktioniert es auch ;).

    mfg
    v R



  • irgendwie blicke ich da gerade nicht mehr durch, wo müssen die klammern hin?

    besten dank schon mal.



  • Morgen,

    naja, hab ich in meinem Satz aber gesagt 😉

    std::ofstream Ausgabe((Dateiname+".txt").c_str());
    

    mfg
    v R



  • sorry, ich bin blutjunger anfänger...
    hat jetzt aber geklappt, vielen dank!



  • Wie kann ich die Datei denn jetzt nochmal öffnen um einen Text daran anzuhängen?

    std::ofstream Ausgabe(Dateinname,ios::app);
    klappt nicht, weil der Bezeichner nicht vergeben ist. Ich muß also die Endung txt dran hängen. Wie kriege ich das hin? Bei
    std::ofstream Ausgabe(Dateinname.txt,ios::app);
    gibt es auch immer einer Fehlermeldung.



  • Tag,

    std::ofstream Ausgabe((Dateiname+".txt").c_str(), ios_base::app);
    

    mfg
    v R



  • Gast221212 schrieb:

    EnERgYzEr schrieb:

    std::string Dateiname;
    
    cout << "Bitte geben Sie einen Dateinamen ein.";
    cin >> Dateiname;
    
    std::ofstream Ausgabe(Dateiname+".txt");
    

    So gehen dann also Stringstreams...

    quatsch...

    #include <sstream> //für stringstreams
    #include <iostream>
    using namespace std;
    
    int main(void)
    {
      string name;
      name = "datei";
      ostringstream test;
      test << name << ".txt";
      cout << test.str();
    }
    

    ausgabe:

    datei.txt
    

    dasselbe geht natürlich auch fürs "einlesen" aus einem string.

    dabei gilt:

    [ C ]                      [ C++ ]
    sprintf()                  ostringstream
    sscanf()                   istringstream
    ---                        (kombiniert) stringstream
    

    die operatoren & die funktionsweise von stringstreams sind ähnlich wie filestreams oder iostreams.



  • So wird jetzt jedesmal eine neue Datei erstellt, ich möchte den Text aber an die erste hängen



  • wenn ich dich korrekt verstanden habe:

    ofstream out("datei.txt",ios::ate);
    


  • dragonball-l schrieb:

    So wird jetzt jedesmal eine neue Datei erstellt, ich möchte den Text aber an die erste hängen

    Hast du meinen Code eigentlich mal ausprobiert? Das app steht fuer append.

    mfg
    v R



  • ja was denn nun? ios::ate oder ios::app? oder bewirken die dasselbe?



  • Lars Hupel schrieb:

    ja was denn nun? ios::ate oder ios::app? oder bewirken die dasselbe?

    Ja, dich meinte ich auch gar nicht. Du stands nur zufaellig zwischen meinem
    Post und dem letzten des OP 😉

    mfg
    v R



  • aha 🙂 aber kannst du mir trotzdem auf meine frage antworten?



  • Lars Hupel schrieb:

    aha 🙂 aber kannst du mir trotzdem auf meine frage antworten?

    Die Datei wird trotzdem neugeschrieben. Man spart sich allerdings einen seekp-
    Aufruf.

    mfg
    v R



  • [quote="virtuell Realisticer"]

    dragonball-l schrieb:

    So wird jetzt jedesmal eine neue Datei erstellt, ich möchte den Text aber an die erste hängen

    Hast du meinen Code eigentlich mal ausprobiert? Das app steht fuer append.

    ja, habe ich.
    also ich erstelle erst meine ausgabe datei und schreibe dann in diese.

    wenn ich jetzt probiere auf diese datei mit deinem Quelltext zuzugreifen wird eine neue Datei erstellt, also es wird nix an die alte gehängt. 😞



  • Zeig mal deinen Quelltext bitte.

    mfg
    v R



  • mach ich morgen, hab den text auf´m rechner der nicht im netzwerk ist...besorge mir morgen einen stick!



  • guten morgen,
    das öffen erfolgt fast am ende...

    sebastian

    #include<iostream>
    #include<fstream>
    #include<string>

    using namespace std;

    int main()
    {

    // Die Datei wl_zanare.txt wird geöffnet

    std::ifstream Eingabedatei_zanare("wl_zanare_ausgabe.txt");
    // Wenn die Datei erfolgreich geöffnet wurde
    if (Eingabedatei_zanare)
    {
    cout << "Die Datei (wl_zanare_ausgabe.txt) wurde erfolgreich gelesen.\n";
    }
    // Wenn die Datei wl_zanare.txt nicht geöffnet werden, wird eine Fehler Meldung ausgegeben
    if (!Eingabedatei_zanare)
    {
    cout << "Die Datei (wl_zanare_3,4x51.txt) kann nicht geoeffnet werden.\n";
    cout << "Bitte ueberpruefen Sie ob sich die Datei im Verzeichnis befindet\n\n";
    }

    // Wenn die Eingabedateizanare erfolgreich gelesen
    // wurde, wird die Ausgabedatei erzeugt!
    // Sie wird vom Benuzter benannt und endet
    // automatisch mit der Endung .txt

    if(Eingabedatei_zanare)
    {

    // Um die Ausgabedatei vom Programm aus zu bestimmen

    // alt: Um bei Programmtests nicht jedesmal eine neue
    // Ausgabedatei eingeben zu müssen nehmen Sie einfach
    // das /* vor ***std::ofstream Ausgabe_fuer_beide_Programme("Ausgabetest.txt");***
    // weg und setzen dafür vor ***std::string Dateiname;***
    // ein /* und nach std::ofstream Ausgabe_fuer_beide_Pro
    // gramme((Dateiname_Ausgabe+".txt").c_str());

    // wieder ein */ zum beenden des Kommentar

    // std::ofstream Ausgabe_fuer_beide_Programme("Ausgabetest.txt");

    // neu
    // Um die Ausgabedatei vom Benutzer aus zu bestimmen mit der Endung .txt

    std::string Dateiname_Ausgabe;

    cout << "Bitte geben Sie einen Namen fuer Ihre Ausgabedatei ein:\t";
    cin >> Dateiname_Ausgabe;

    std::ofstream Ausgabe_fuer_beide_Programme((Dateiname_Ausgabe+".txt").c_str());

    // Ausgabedatei erfolgreich erstellt

    if(Ausgabe_fuer_beide_Programme)
    {
    cout << "Ausgabedatei erfolgreich erstellt.\n";
    }
    if(!Ausgabe_fuer_beide_Programme)
    {
    cout << "Ausgabedatei konnte nicht erstellt werden";
    }

    // Jetzt werden die Zeilen für die Ausgabedatei definiert
    // Zuerst muß die Funktion "Ausgabe_fuer_beide_Programme"
    // aufgerufen werden. Dann der Inhalt der in der Ausgabe-
    // datei stehen soll.

    // Inhalt der Datei Eingabedatei_zanare

    char ch;
    while (Eingabedatei_zanare.get(ch))
    Ausgabe_fuer_beide_Programme << ch;

    // Schließen der Eingabedatei von Zanare
    Eingabedatei_zanare.close();
    }

    cout << " Die Dateiausgabe fuer beide Programme wird im Anhängemodus geöffnet";

    std::string Dateiname_Ausgabe;

    std::ofstream Ausgabe_fuer_beide_Programme((Dateiname_Ausgabe+".txt").c_str(),ios::ate);
    if (!Ausgabe_fuer_beide_Programme)
    {
    cout << "Es ist nicht möglich die Ausgabedatei für beide Programme zu öffnen";

    }
    getchar();
    return 0;

    }



  • Nabend,

    sry, hab erst jetzt wieder ins INET geschaut ;).

    Mach aus dem ios::ate ein ios::app.

    mfg
    v R



  • kein ding, ist ja wochenende,....was ist das nochmal 🙂

    ich habe aber immer noch das Problem das eine zweite .txt Datei erstellt wird.


Anmelden zum Antworten