我试图创建一些临时文件来编写和读取,然后在程序完成时销毁。我见过tmpfile
,这会很棒,但我也想知道该文件的名称。我已经阅读了ofstream
的文档但我并不认为我正确地执行了某些事情。我想做的事情:
char xFile[64]
和char yFile[64]
的成员变量的类。std::tmpnam(xFile); std::tmpnam(yFile)
。这会将类似/y3s3
的c字符串分配到xFile。在第3点,我写了类似
的内容void filemng::makeXCopy (std::string text) {
// actually I've tried fsteam and ifstream as well, shot in the dark
std::ofstream xfile(xFile, std::ofstream::out);
if(!xfile.good()) {
std::cerr << "Failed to open xFile.\n";
}
}
当然,当我运行它时,我看到&#34;无法打开xFile。&#34;我只是看不出我在这里做错了什么。
答案 0 :(得分:0)
以下是使用mkstemp执行此操作的示例:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char name[255] = "/tmp/mytempfile_XXXXXX";
int fd = mkstemp(name);
if (fd > 0) {
printf("Created %s\n", name);
write(fd, "some dataa\n", strlen("some dataa\n"));
close(fd);
} else {
printf("Failed \n");
}
return 0;
}
请注意,传递给mkstmp的字符串中的“xxxxxx”将替换为一些唯一的字符串,该字符串将使文件名在目录中唯一。