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 ?
-
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

-
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\navmeshstartest und dieHallo.txtinC:\Users\kanta\Navmeshliegt, dann gehe ich soagar davon aus, dass das Arbeitsverzeichnis momentan nichtC:\Users\kanta\Navmeshist, weil du ja sonst einfach nurnavmeshzum 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 ...