如果这个问题已经在其他地方得到了回答,很抱歉,我找不到。
我有一个有趣的问题,我有一个编译程序 prog.exe
,它读取一个包含配置的文件 prog.cfg
。如果我通过双击打开 prog.exe
,一切都很好。但是,如果我从命令行或批处理文件打开它,我首先必须设置目录。例如,如果我的程序位于桌面上的 progs
文件夹中,并从桌面运行 progs\prog.exe
,它不会加载配置,因为它是在桌面上寻找配置,即在当前工作目录中。
如果您知道这很好,但这只是让用户跳过的另一个障碍。在 C++ 中有没有一种方法可以回溯到用于启动程序的命令以推断配置文件是否在当前工作目录中?
或者,我问的问题完全错误吗?
非常感谢!
最佳答案
您可以使用 GetModuleFileName(nullptr, buf, bufsize)
获取可执行文件的路径。
请注意,标准 main
函数的 argv[0]
不保证提供该路径,并且当它提供路径时,不保证提供可编程使用的路径路径的表示。
关于c++ - 读取调用程序的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34724522/