2014-09-25 127 views
0

我需要创建一个临时文件,用一些数据填充它,并将结果发送到仅接受std::istreams的函数。在C++中创建临时文件

我尝试使用tmpfile()和它的作品对我的第一个要求 - “创建一个文件,并用一些数据填充它,但它返回一个FILE*,有没有办法把它转换(据我所知),以std::streams

是否有创建临时文件的C++方式? 如果这是不可能的,tmpnam返回一个有效的文件名有多可靠?有人在Android或iOS上测试过吗?

编辑:我不想复制数据到std::stringstream作为我的测试的一部分是从磁盘读取数据。

+1

“*将结果发送给只接受std :: istreams的函数。*”不是文件,而是:你知道istringstream吗? – deviantfan 2014-09-25 20:35:13

+0

我不想复制数据。我的一部分测试是从磁盘读取数据... – Felics 2014-09-25 20:37:55

+0

是否有什么特别的原因让你相信'tmpnam'不会做你想做的事? – 2014-09-25 20:39:47

回答

1

如果您想要替代std::tmpfilestd::tmpnam,您可能需要查看Boost Filesystem库。它包含一个功能unique_path(),它会给你一个放置目录,文件等的地方。

它还包括标准库没有的其他文件系统操作功能,比如迭代目录中的文件。我发现这些对单元测试特别有用。