2

私はxcodeを使用していて、パスの最後にアプリ名を付けずにアプリが実行されているパスを取得したいのですが、試しました:

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

アプリが実行されている正しいパスが表示されますが、/ my app name で終わります。アプリ名を削除するにはどうすればよいですか?

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 に答える