在应用程序的末尾获取没有应用程序名称的应用程序路径

时间:2012-12-10 08:49:06

标签: c++ c xcode

我正在使用xcode,并希望获得我的应用运行的路径,而路径末端没有应用名称,但我尝试过:

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

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

4 个答案:

答案 0 :(得分:1)

您可以使用dirname功能。

答案 1 :(得分:1)

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

示例:

std::string file = argv[0];

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

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

答案 2 :(得分:1)

使用 dirname

#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

答案 3 :(得分:0)

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

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

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