我想通过调用tmpfnam
函数来获取临时文件名并使用它创建写入文件,但我的C++程序中创建了一个临时文件代码无法创建临时文件。然而,当我使用用户提供的文件名或字符串常量而不是使用来自tmpfnam
的临时名称时,文件创建工作得非常好。这里有一个例子:无法在Windows上用C++创建临时文件使用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.我试图运行在管理员权限的程序,以及仍然没有运气 。任何想法为何如此?
你传递给'tmpnam'的是什么?足够大吗? – cnicutar 2012-07-24 20:02:24
我觉得你能够写入与可执行文件相同的目录是令人惊讶的。可执行文件不得位于受保护的位置。 – 2012-07-24 20:02:50
@cnicutar'fname'被声明为大小'L_tmpnam',所以它应该可以正常工作。 – adi 2012-07-24 20:09:47