我使用Xcode和想在我的應用程序,而不在路徑末尾的應用程序名稱運行路徑的終點,但我已經嘗試過:獲取沒有應用程序名稱的應用程序路徑在應用程序
printf("%s\n", argv[0]);
它給了我的應用程序運行的正確路徑,但它以/我的應用程序名稱結束,我如何刪除應用程序名稱?
我使用Xcode和想在我的應用程序,而不在路徑末尾的應用程序名稱運行路徑的終點,但我已經嘗試過:獲取沒有應用程序名稱的應用程序路徑在應用程序
printf("%s\n", argv[0]);
它給了我的應用程序運行的正確路徑,但它以/我的應用程序名稱結束,我如何刪除應用程序名稱?
使用目錄名
#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
使用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("/"));
這應該做你想要什麼,除非我的代碼中任何愚蠢的錯誤
可否請你告訴我一個小例子的代碼,如果你不介意 –
如果你正在尋找的bash pwd
的等效,您可以使用:
#include <unistd.h>
char *getcwd(char *buf, size_t size);
請注意,如果你以前稱爲CHDIR()。這不會返回你正在尋找的路徑。
請告訴我如何使用它的權利來幫助我和其他人在未來 –
目錄名()實際上是精益求精的態度,如果你只是想要去除從文件名整個路徑。 GETCWD()爲您提供準確的輸出作爲外殼的PWD,這是當前的工作目錄相同(如果不變,目錄你叫從二進制) – davak
哪種語言(無,C/C++是不是一種編程語言)? –