kommandozeile verhindert ifstream ?



  • Hallo,

    es geht um diesen code

    string dataname ="Hallo.txt";
        source.open(dataname.c_str());
        if (!source)
        {
            cerr << dataname
                 << " not found\n";
            return-1;
        }
    

    wenn ich mein programm per doppel klick starte funktioniert es perfekt. sobald ich es per kommandozeile starte findet es die datei nicht mehr.

    lustiger weise funktioniert das programm bei meinem freund per doppel klick und/oder kommandozeile.

    hat jemand eine ahnung woran es liegen könnte ?


  • Mod

    Da wird wohl das Arbeitsverzeichnis unterschiedlich sein. Da der Pfad relativ zu diesem ist, spielt das eine Rolle.



  • soweit ich weiß muss mein programm nur im selben ordner liegen wie meine .txt

    und das funktioniert ja per doppelklick

    wenn ich es dann mit

    C:\Users\kanta\Navmesh\navmesh

    aufrufe, findet er sie nicht.

    deswegen verstehe ich nicht was du mit unterschiedlichem arbeitsverzeichnis meinst.



  • Gib mal echo %cd% in der Kommandozeile ein. Das ist das Arbeitsverzeichnis. Und in dem Verzeichnis sucht Dein Programm die Hallo.txt. Das Arbeitsverzeichnis wechselst Du mit cd neues_arbeitsverzeichnis.

    edit: gesehen, dass Du unter Windows arbeitest.



  • oh man,
    danke 🙂

    was würde nur ich ohne euch tun ❤


  • Mod

    Wo deine Datei liegt, hat überhaupt nichts mit dem Ausführungsverzeichnis zu tun (außer dass es der Default ist, wenn du es per Doppelklick startest). Wenn du sagst, dass du dein Programm per C:\Users\kanta\Navmesh\navmesh startest und die Hallo.txt in C:\Users\kanta\Navmesh liegt, dann gehe ich soagar davon aus, dass das Arbeitsverzeichnis momentan nicht C:\Users\kanta\Navmesh ist, weil du ja sonst einfach nur navmesh zum Starten benutzt hättest.



  • kantaki schrieb:

    wenn ich es dann mit

    C:\Users\kanta\Navmesh\navmesh

    aufrufe, findet er sie nicht.

    Du musst:
    c:
    cd C:\Users\kanta\Navmesh
    Dich erst in das Verzeichnis navigieren, dann navmesh aufrufen ...


Anmelden zum Antworten