über Variable auswählen welche text-Datei geöffnet werden soll



  • Guten Tag liebe Community

    Ich habe folgendes Problem:

    Ich habe eine Variable die bestimmen soll, welches File geöffnet werden sollte. Wenn die Variable 1 beinhaltet dann soll Text1.txt geöffnet werden, bei Variable = 2 Text2.txt etc.

    Kann ich direkt diesen Befehl
    Uebung.open("C:/Text1.txt", std::ios::in);
    abändern oder wie soll ich das angehen?

    Bin ratlos und habe schon einiges ohne Erfolg ausprobiert.

    Danke für eure Antworten

    Grüsschen Nepomuk



  • int var = 1; //oder eben 0
    fstream f;
    if (var==1)
    {
    f.open("Text1.txt");
    }
    else
    {
    f.open("Text2.txt");
    }
    f.close();
    

    meinst du das?
    mfg
    @night@
    €dit: srry, hab dich falsch verstanden...
    Hier die nächste Lösung:

    #include <windows.h>
    #include <iostream>
    #include <fstream>
    using namespace std;
    int main(...)
    {
        int var = 1;
        char zahl = var + 48; //konvertirung zu einem buchstaben
        char buffer[20];
        strcpy(buffer, "Text");
        buffer[4] = zahl;
        buffer[5] = 0;
        strcat(buffer, ".txt");
        for ( int i=0;buffer[i]!=0;i++)
        {
            cout << buffer[i];
        }
        cout << endl;
        fstream f;
        f.open(buffer);
        f << "tja..." << endl;
        f.close();
        system("pause");
    }
    

    Mir fällt gerade auf dass das nur bei zahlen von 1-9 geht^^
    Also benutz leiber ne andere Variante.



  • Ich denke, das if/else ist eine Möglichkeit, wenn es recht viel wird, fährst du mit einem switch besser.
    Wenn aber zu variable == <x> immer Test<x>.txt geöfnet werden soll, ist die Lösung hier die schnellste:

    std::stringstream stream; // braucht ein #include <sstream>
    stream << variable; // deine int-Variable
    std::string filename = std::string("Test") + stream.str() + std::string(".txt");
    


  • Vielen Dank für die schnellen Antworten

    l'abra d'or schrieb:

    std::stringstream stream; // braucht ein #include <sstream>
    stream << variable; // deine int-Variable
    std::string filename = std::string("Test") + stream.str() + std::string(".txt");
    

    wie füge ich den string filename dann in den Pfad?



  • Nepomuk schrieb:

    wie füge ich den string filename dann in den Pfad?

    Wie meinen? Also ein "C:\" vorne weg?
    -> http://cplusplus.com/reference/string/operator+/



  • Wenn ich den ganzen Pfad in dem string filename habe und dann versuche das programm mit

    Uebung.open(filename, std::ios::in);

    zu starten bekomme ich folgende fehlermeldungen:

    E2034 Konvertierung von 'string' nach 'const char*' nicht möglich
    E2342 Keine Übereinstimmung des Typs beim Parameter '_s'('const char*'erwartet, 'string' erhalten)



  • filename.c_str() gibt dir einen const char* von einem string



  • hmmm auf das hätte ich eigentlich kommen sollen 🙄

    Vielen Dank euch, es läuft nun so wie gewünscht. Viel Spass und ein erfolgreiches Programmieren wünsch ich Euch

    Grüsschen Nepomuk



  • ich würd mir ein ostringstream cmd zusammen bauen und dann mit
    cmd.str().c_str() einfügen

    mfg


Anmelden zum Antworten