Existe-t-il une méthode indépendante de la plate-forme et du système de fichiers pour obtenir le chemin complet du répertoire à partir duquel un programme s'exécute en utilisant C/C++ ? À ne pas confondre avec le répertoire de travail actuel. (S'il vous plaît, ne suggérez pas de bibliothèques, à moins qu'il ne s'agisse de bibliothèques standard comme clib ou STL).
(S’il n’y a pas de méthode agnostique à la plate-forme/au système de fichiers, les suggestions qui fonctionnent sous Windows et Linux pour des systèmes de fichiers spécifiques sont également les bienvenues).
Si vous voulez une méthode standard sans bibliothèques : Non. Le concept de répertoire n'est pas inclus dans la norme.
Si vous êtes d'accord qu'une certaine dépendance (portable) sur une librairie quasi-standard est acceptable : utilisez la [bibliothèque de système de fichiers de Boost][1] et demandez le [initial_path()][2].
À mon avis, c'est ce qu'il y a de plus proche, avec un bon karma (Boost est un ensemble de bibliothèques de haute qualité bien établi).
[1] : http://www.boost.org/doc/libs/1_36_0/libs/filesystem/doc/reference.html [2] : http://www.boost.org/doc/libs/1_36_0/libs/filesystem/doc/reference.html#initial_path
Non, il n'y a pas de méthode standard. Je crois que les normes C/C++ ne prennent même pas en compte l'existence de répertoires (ou d'autres organisations de systèmes de fichiers).
Sous Windows, la fonction GetModuleFileName() renvoie le chemin d'accès complet au fichier exécutable du processus actuel lorsque le paramètre hModule a la valeur NULL. Je ne peux pas vous aider avec Linux.
Vous devriez également préciser si vous voulez le répertoire actuel ou le répertoire où se trouve l'image du programme/exécutable. En l'état actuel, votre question est un peu ambiguë sur ce point.
Pour Win32, [GetCurrentDirectory][1] devrait faire l'affaire.
[1] : http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx