如果已经在其他地方回答过,我很抱歉,我找不到它。
我有一个有趣的问题,我有一个编译程序prog.exe
,它读取包含配置的文件prog.cfg
。如果我通过双击打开prog.exe
,一切都很好。但是,如果我从命令行或批处理文件打开它,我首先必须设置目录。例如,如果我将程序放在桌面上的progs
文件夹中,并从桌面运行progs\prog.exe
,则它不会加载配置,因为它正在桌面上查找配置,即在当前的工作目录。
如果您了解它,这很好,但它只是用户跳过的另一个环节。有没有办法在c ++中回溯到用于启动程序的命令,以推断配置文件是否在当前工作目录中?
或者,我是否完全问错了问题?
非常感谢!
答案 0 :(得分:3)
您可以使用GetModuleFileName(nullptr, buf, bufsize)
获取可执行文件的路径。
请注意,标准main
函数argv[0]
无法保证提供该路径,并且当它提供路径时,无法保证提供路径的编程可用表示。
答案 1 :(得分:1)
如果我理解正确,你总是希望你的.exe从.exe所在的文件夹中读取你的.cfg文件吗?正确?
尝试argv[0]
。
argv[0]
是运行exe时的完整.exe路径,它是主函数的参数。