2

我正在使用 xcode 并希望在路径末尾没有应用程序名称的情况下获取我的应用程序运行的路径,但我尝试过:

printf("%s\n", argv[0]);

它为我提供了运行我的应用程序的正确路径,但它以 /my 应用程序名称结尾,我如何删除应用程序名称?

4

4 回答 4

1

您可以使用该dirname功能。

于 2012-12-10T08:52:09.037 回答
1

用于std::string::find_last_of查找路径分隔符的最后一个实例(/如果 *nix,\如果是 windows)并用于std::string::substr将所有内容复制到该索引。

例子 :

std::string file = argv[0];

std::string path = file.substr(0,file.find_last_of("/"));

这应该做你想做的事,除非我的代码中有任何愚蠢的错误

于 2012-12-10T08:52:49.050 回答
1

使用目录名

#include <iostream>
#include <libgen.h>

int main(int argc, char* argv[])
{        
    std::string dir = dirname(argv[0]);
    std::cout << dir << std::endl;
}

运行应用程序:

  $/data/temp/test

输出:

  $/data/temp
于 2012-12-10T09:03:38.297 回答
0

如果您正在寻找等效的 bash pwd,您可以使用:

#include <unistd.h>
char *getcwd(char *buf, size_t size);

请注意,如果您之前调用了 chdir()。这不会返回您正在寻找的路径。

于 2012-12-10T08:58:34.627 回答