我正在使用 xcode 并希望在路径末尾没有应用程序名称的情况下获取我的应用程序运行的路径,但我尝试过:
printf("%s\n", argv[0]);
它为我提供了运行我的应用程序的正确路径,但它以 /my 应用程序名称结尾,我如何删除应用程序名称?
您可以使用该dirname
功能。
用于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("/"));
这应该做你想做的事,除非我的代码中有任何愚蠢的错误
使用目录名
#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
如果您正在寻找等效的 bash pwd
,您可以使用:
#include <unistd.h>
char *getcwd(char *buf, size_t size);
请注意,如果您之前调用了 chdir()。这不会返回您正在寻找的路径。