2012-12-10 65 views
2

我使用Xcode和想在我的應用程序,而不在路徑末尾的應用程序名稱運行路徑的終點,但我已經嘗試過:獲取沒有應用程序名稱的應用程序路徑在應用程序

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

它給了我的應用程序運行的正確路徑,但它以/我的應用程序名稱結束,我如何刪除應用程序名稱?

+0

哪種語言(無,C/C++是不是一種編程語言)? –

回答

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 
1

可以使用dirname功能。

+0

你能否給我提供任何關於如何正確使用它的例子?它可能很簡單,但要避免失誤 –

+0

@JhsajdaHhas請參閱從billz答案。 –

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("/")); 

這應該做你想要什麼,除非我的代碼中任何愚蠢的錯誤

+0

可否請你告訴我一個小例子的代碼,如果你不介意 –

0

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

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

請注意,如果你以前稱爲CHDIR()。這不會返回你正在尋找的路徑。

+0

請告訴我如何使用它的權利來幫助我和其他人在未來 –

+0

目錄名()實際上是精益求精的態度,如果你只是想要去除從文件名整個路徑。 GETCWD()爲您提供準確的輸出作爲外殼的PWD,這是當前的工作目錄相同(如果不變,目錄你叫從二進制) – davak