Dateinamen als Variable

baigox

Mitglied
Also
Ich programiere ein Spiel, bei dem die Level in einer Datei stehen.
Nur hab ich das Problem:Wenn ich neue Level hinzufüge, muss ich das Programm umschreiben.
da Brauche ich einen "Befehl" wie ich den Dateinamen von einer Variable aus öffnen kann.
zur zeit nutze ich diese Befehle zum öffen:
so funktioniert es:
Code:
fstream a;
a.open("level01.txt", ios::in);
if(!a){
printf("ERROR\n");
system("PAUSE");
return 0;
}
a >> "eine variable";
a.close();
nun möchte ich das anstat level01.txt eine Variable kommt
wie z.B. eine
Code:
char dateiname[10];
in "dateiname" steht der name der Datei, die ich öffnen will.

Bitte antwortet schnell
ich brauch das für ein Projekt
 
Was ist da schwer?

statt
a.open("level01.txt", ios::in);
schreibst du halt
a.open(dateiname,ios::in);

Oder ich versteh dein Problem nicht ganz.
 
das mein ich
so hab ich ja auch, Doch dann hängt sich das programm immer auf.
nicht so mit "das programm antwortet nicht mehr" sonder GAR NICHTS
lässt sich nicht schließen führt keine folgenden printf aus geht nichtmal per Task/Prozess beenden.
ich kann alles machen nur das Fenster schließt nur per shutdown
 
Zeig einmal den kompletten Code

PS: Falls dein String wirklich nur 10 Zeichen lang ist, und du zB "level01.txt" reinspeicherst, dann ist er zu kurz!
Was dein Programm dann macht, kann ziemlich zufällig sein.
 
Zuletzt bearbeitet:
Hallo baigox,

anstatt ein char-Array zu verwenden, könntest du auch die string-Klasse verwenden. Dann brauchst du dich nicht mehr um die Speicherreservierung kümmern.
C++:
string str = "level01.txt";

ifstream a(str.c_str());

if( a.is_open() )
{
    // ...
}
Gruß
MCoder
 
Geht das auch mit
Code:
fstream a(str.c.str());
?
Kurze Erklärung: fstream ist für Lesen UND Schreiben zuständig, während ifstream nur lesen kann und ofstream nur schreiben kann. Das bedeutet , dass bei fstream immer angegeben werden muss, in welcher Richtung (also Lesen oder Schreiben) der IO-Stream verwendet werden soll. Bei Benutzung der spezialisierten Klassen spart man sich etwas Schreibarbeit ;)

Gruß
MCoder
 
Wenn mich nicht alles täuscht und so stehst auch in der Referenz ist der zweite Parameter des Konstruktors von fstream optional und führt bei Nichtsetzen dazu, dass die Datei für den Lese- und Schreibmodus geöffnet wird.
 
Zurück