无法使用tmpfnam在C++中的Windows上创建临时文件

Unable to create a temporary file on Windows in C++ using tmpfnam

本文关键字:Windows 中的 创建 临时文件 C++ tmpfnam      更新时间:2023-10-16

我试图在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中。我也试着在管理员权限下运行这个程序,但仍然没有成功。知道为什么会这样吗?

你试过这种方法吗?

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

希望它能有所帮助。