Gibt es eine plattformunabhängige und dateisystemunabhängige Methode, um den vollständigen Pfad des Verzeichnisses abzurufen, in dem ein Programm mit C/C++ ausgeführt wird? Nicht zu verwechseln mit dem aktuellen Arbeitsverzeichnis. (Bitte schlagen Sie keine Bibliotheken vor, es sei denn, es handelt sich um Standardbibliotheken wie clib oder STL.)
(Wenn es keine plattform-/dateisystemunabhängige Methode gibt, sind auch Vorschläge willkommen, die in Windows und Linux für bestimmte Dateisysteme funktionieren.)
Es sei denn, Sie können den Pfad zuverlässig extrahieren
argv[0]
wird die Technik sehr OS-abhängig sein.– David R. Tribble
28. Januar 2010 um 0:42 Uhr
Nur zur Verdeutlichung: Das „aktuelle Verzeichnis“ oder „das Verzeichnis, von dem aus das Programm ausgeführt wird“ (in der Terminologie der Frage) ist das Verzeichnis, in dem sich die Bilddatei des Programms (~.exe-Datei) befindet, und die jetzige Arbeiten Verzeichnis’ ist das Verzeichnis, das automatisch vervollständigt wird, wenn das Programm relative Pfade verwendet?
– colemik
24. April 2013 um 9:53 Uhr
Wenn du
#include <windows.h>
setzt Windows automatisch achar*
zum ausführbaren Pfad in_pgmptr
. Sie müssen keine zusätzlichen Funktionen aufrufen oder Junk annehmen, wenn Sie nur unter Windows arbeiten.– rsethc
1. Mai 2013 um 1:38 Uhr
Beantwortet das deine ursprüngliche Frage? github.com/gpakosz/whereami
– Gregory Pakosz
5. Juni 2015 um 15:20 Uhr
Obwohl der Kommentar drei Jahre alt ist, möchte ich den Kommentar von rsethc über erweitern
_pgmptr
. In der MSDN-Dokumentation heißt es, dass die_pgmptr
und_wpgmptr
Variablen sind veraltet, und Sie sollten die Funktion verwenden_get_pgmptr(char**)
oder_get_wpgmptr(wchar_t**)
stattdessen. MSDN– Hydranix
5. März 2016 um 23:44 Uhr