Linux または POSIX システムを使用していて、インタラクティブなシェルを理解していると思います~
(例: bash
)
実際には、 で始まるファイル パスは~
ほとんど発生しません (mkdir '~'
シェルでそのようなディレクトリを作成することはできますが、それはひねくれた行為です)。シェルは引数をグロブしているため、端末でコマンドとして入力すると、シェル(プログラムではありません!)が置き換え~
られることに注意してください。glob(7)を参照してください。おそらく、C++ プログラム内でglob(3)またはwordexp(3)を使用する必要があります (ただし、文字列が何らかのデータ (構成ファイル、ユーザー入力など) に由来する場合にのみそうする必要があります...)/home/martin
myprogram ~/example.txt
"~/example.txt"
場合によっては、単純にgetenv(3)を使用してホーム ディレクトリを取得することもできます (またはgetpwuid(3)とgetuid(2)を使用)。おそらくあなたはするかもしれません
std::string home=getenv("HOME");
std::string path= home+"/example.txt";
ofstream myfile(path);
本気なら、 が返らgetenv("HOME")
ないことを確認する必要がありますNULL
。実際には、それが起こる可能性は低いです。
これも参照してください。