-1

関数を呼び出して一時ファイル名を取得し、それを使用して書き込み用のファイルを作成することで、C++ プログラムで一時ファイルを作成しようとしてtmpfnamいますが、コードで一時ファイルを作成できません。ただし、からの一時的な名前を使用する代わりに、ユーザー指定のファイル名または文字列定数を使用すると、ファイルの作成はまったく問題なく機能しtmpfnamます。例を次に示します。

std::tmpnam(fname); //does not work 
std::fstream f(fname,std::ios::out);

char* fname = "myfile.txt"; //works
std::fstream f(fname,std::ios::out);

ケース2のファイルがソースファイルと同じディレクトリに作成されていることを確認しましたが、ケース1では作成されていません。管理者権限でプログラムを実行しようとしましたが、まだ運がありません. これがなぜそうなのか、何か考えはありますか?

4

1 に答える 1

1

この方法で試してみましたか?

char fname[L_tmpnam];
if (std::tmpnam(fname)) {
    std::fstream f(fname,std::ios::out);
    // ...
}

それが役立つことを願っています。

于 2012-07-24T20:09:32.503 に答える