tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von sheel
ERLEDIGT
JA
ANTWORTEN
13
ZUGRIFFE
776
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    baigox baigox ist offline Mitglied
    Registriert seit
    Jan 2010
    Ort
    (Hessen)
    Beiträge
    24
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    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 :
    1
    
    char dateiname[10];
    in "dateiname" steht der name der Datei, die ich öffnen will.

    Bitte antwortet schnell
    ich brauch das für ein Projekt
     
    MFG Baigox

    #include<wer_Rechtshreibfehler_findet_darf_sie_behalten.h>

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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.
     

  3. #3
    baigox baigox ist offline Mitglied
    Registriert seit
    Jan 2010
    Ort
    (Hessen)
    Beiträge
    24
    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
     
    MFG Baigox

    #include<wer_Rechtshreibfehler_findet_darf_sie_behalten.h>

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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.
    Geändert von sheel (17.04.10 um 16:25 Uhr)
    baigox bedankt sich. 

  5. #5
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    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.
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    
    string str = "level01.txt";
     
    ifstream a(str.c_str());
     
    if( a.is_open() )
    {
        // ...
    }
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  6. #6
    baigox baigox ist offline Mitglied
    Registriert seit
    Jan 2010
    Ort
    (Hessen)
    Beiträge
    24
    Geht das auch mit
    Code :
    1
    
    fstream a(str.c.str());
    ?
     
    MFG Baigox

    #include<wer_Rechtshreibfehler_findet_darf_sie_behalten.h>

  7. #7
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Für solche Sachen sollte eigentlich nicht ein Post nötig sein, da kannst du einfach in einer Referenz nachschauen. Ich hab das hier mal für dich erledigt:
    http://www.cplusplus.com/reference/i...tream/fstream/

    Ausserdem: Die Funktion heisst std::string::c_str(void) und nicht std::string::c.str(void)
     

  8. #8
    Avatar von Daniel0108
    Daniel0108 Daniel0108 ist offline Mitglied Silber
    Registriert seit
    Jan 2010
    Ort
    Österreich
    Beiträge
    85
    Zitat Zitat von baigox Beitrag anzeigen
    Geht das auch mit
    Code :
    1
    
    fstream a(str.c.str());
    ?
    Nein,
    aber mit
    Code :
    1
    2
    
    fstream a;
    a.open(str.c_str(), ios::in);

    Lg
    Daniel
     

  9. #9
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von baigox Beitrag anzeigen
    Geht das auch mit
    Code :
    1
    
    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
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  10. #10
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    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.
     

  11. #11
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von Cromon Beitrag anzeigen
    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.
    Du hast vollkommen recht. Es schadet wirklich nicht nicht, ab und zu mal wieder einen Blick in die Referenz zu werfen
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  12. #12
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Ich finde es daher meist auch sinnvoll auf Standardparameter zu verzichten und sie anzugeben. Das erhöht die Lesbarkeit des Codes enorm.
     

  13. #13
    baigox baigox ist offline Mitglied
    Registriert seit
    Jan 2010
    Ort
    (Hessen)
    Beiträge
    24
    Es hat sich erledigt:hab einfach die Char verlängert

    Problem gelöst und neues entstandenofftopic)wie schließt man Themen?
     
    MFG Baigox

    #include<wer_Rechtshreibfehler_findet_darf_sie_behalten.h>

  14. #14
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Du kannst unten auf "Erledigt" drücken.
     

Ähnliche Themen

  1. AIX - Dateinamen in Variable laden
    Von chocox im Forum Linux & Unix
    Antworten: 0
    Letzter Beitrag: 18.06.09, 08:36
  2. Variable für Dateinamen in Batch
    Von Rechtschreibfehla im Forum Sonstige Sprachen
    Antworten: 2
    Letzter Beitrag: 16.06.09, 16:33
  3. Variable für Dateinamen
    Von Rechtschreibfehla im Forum Microsoft Windows
    Antworten: 2
    Letzter Beitrag: 11.06.09, 18:20
  4. Dateinamen der PHP-Datei in Variable!
    Von Saber Rider im Forum PHP
    Antworten: 7
    Letzter Beitrag: 01.11.03, 15:08
  5. Antworten: 6
    Letzter Beitrag: 25.10.02, 23:19

Stichworte