读取命令从

时间:2016-01-11 14:58:48

标签: c++ windows

如果已经在其他地方回答过,我很抱歉,我找不到它。

我有一个有趣的问题,我有一个编译程序prog.exe,它读取包含配置的文件prog.cfg。如果我通过双击打开prog.exe,一切都很好。但是,如果我从命令行或批处理文件打开它,我首先必须设置目录。例如,如果我将程序放在桌面上的progs文件夹中,并从桌面运行progs\prog.exe,则它不会加载配置,因为它正在桌面上查找配置,即在当前的工作目录。

如果您了解它,这很好,但它只是用户跳过的另一个环节。有没有办法在c ++中回溯到用于启动程序的命令,以推断配置文件是否在当前工作目录中?

或者,我是否完全问错了问题?

非常感谢!

2 个答案:

答案 0 :(得分:3)

您可以使用GetModuleFileName(nullptr, buf, bufsize)获取可执行文件的路径。

请注意,标准main函数argv[0]无法保证提供该路径,并且当它提供路径时,无法保证提供路径的编程可用表示。

答案 1 :(得分:1)

如果我理解正确,你总是希望你的.exe从.exe所在的文件夹中读取你的.cfg文件吗?正确?

尝试argv[0]

argv[0]是运行exe时的完整.exe路径,它是主函数的参数。