【发布时间】:2019-05-04 07:14:08
【问题描述】:
嘿,我一直在编写一个程序(一种电子书查看类型的东西),它从可执行文件所在文件夹中的文件夹加载文本文件。这给我带来了一些问题,因为如果我使用命令“./folder/folder/program”从另一个目录运行程序,例如,我的程序将找不到文本,因为工作目录不正确。我不能有一个绝对目录,因为我希望程序是可移植的。有没有办法获得可执行文件运行的精确目录,即使它是从不同的目录运行的。我听说可以结合 argc[0] 和 getcwd() 但是当目录中有空格时 argc 会被截断,(我认为?)所以我想尽可能避免这种情况。
我在 Linux 上使用 g++,提前谢谢
【问题讨论】:
-
argc 是参数计数; argv 是参数向量(指向字符串的指针数组)。 argv[0] 不会被空格截断; argv[0] 由启动程序的程序选择,不一定与程序的路径有任何关系。如果 argv[0] 以 '/' 开头,则不要添加 getcwd()。
-
你可以访问 boost 库吗?
-
等一下。您需要“可执行路径”还是“运行可执行文件的目录”?