私はxcodeを使用していて、パスの最後にアプリ名を付けずにアプリが実行されているパスを取得したいのですが、試しました:
printf("%s\n", argv[0]);
アプリが実行されている正しいパスが表示されますが、/ my app name で終わります。アプリ名を削除するにはどうすればよいですか?
この機能を使用できます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()を呼び出した場合は注意してください。これはあなたが探しているパスを返しません。