0
は、私はこの短いプログラムを持っている:私は引数を供給しない場合これはなぜプログラムのディレクトリ内のファイルを開きませんか?
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
int main (int argc, char * argv[]) {
std::string homedir = std::getenv("HOME");
std::string filename = argc > 1 ? argv[1] : (homedir + "/" + "file");
std::cout << homedir << std::endl;
std::cout << filename << std::endl;
std::fstream file;
file.open(filename, std::ios::out);
file << "Yo yo waddup" << std::endl;
file.close();
return 0;
}
、それはユーザーのホームディレクトリにファイルを開きます。それは当然のことです。私はこのような別のディレクトリから実行するときしかし:
$ ./folder/hometest examplefile
プログラムは、私の現在のディレクトリの代わりに、プログラムがあるディレクトリに「examplefile」を作成します。
なぜこれが起こっているのですか?
これは特にC++に関する質問ではないようです。他のすべてのシェルコマンドについても同じ動作が得られます。 – Rakete1111
あなたのプログラムを通過する必要があります。プログラムは大丈夫です。期待どおりに働く。 – Omkar
質問を見ると、現在の作業ディレクトリのパスを取得し、o/pファイルのパスに追加することをお勧めします。 – Omkar