【发布时间】:2010-09-13 16:16:35
【问题描述】:
是否有平台无关和文件系统无关的方法来获取使用 C/C++ 运行程序的目录的完整路径?不要与当前工作目录混淆。 (请不要推荐库,除非它们是标准库,如 clib 或 STL。)
(如果没有与平台/文件系统无关的方法,也欢迎在 Windows 和 Linux 中针对特定文件系统工作的建议。)
【问题讨论】:
-
除非您能可靠地从
argv[0]中提取路径,否则该技术将非常依赖于操作系统。 -
只是为了澄清:“当前目录”,或者,“程序运行的目录”(在问题的术语中)是程序的图像文件所在的目录(〜 .exe 文件),并且“当前工作目录”是该目录,如果程序使用相对路径,则自动完成?
-
当您
#include <windows.h>时,Windows 会自动将char*放入_pgmptr中的可执行路径。如果您只在 Windows 上工作,则不需要调用额外的函数或假设垃圾。 -
这能回答你原来的问题吗? github.com/gpakosz/whereami
-
虽然评论来自三年前,但我想扩展 rsethc 关于
_pgmptr的评论。 MSDN 文档指出_pgmptr和_wpgmptr变量已弃用,您应该改用函数_get_pgmptr(char**)或_get_wpgmptr(wchar_t**)。 MSDN
标签: c++ c working-directory