ü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ügenmfg