我需要创建一个临时文件,用一些数据填充它并将结果发送到只接受std::istreams
的函数。
我尝试使用tmpfile()并且它适用于我的第一个要求 - '创建一个文件并填充一些数据'但它返回FILE*
并且没有办法将它(据我所知)转换为std::streams
。
是否有C ++方式创建临时文件? 如果无法做到这一点,tmpnam返回有效文件名的可靠性如何?有没有人在Android或iOS上测试过这个?
编辑:我不想将数据复制到std::stringstream
,因为我的测试的一部分是从磁盘读取数据。
答案 0 :(得分:2)
如果您想要替代std::tmpfile
或std::tmpnam
,可能需要查看Boost Filesystem库。它包含一个函数unique_path(),它可以为您提供放置目录,文件等的位置。
它还包括标准库没有的其他文件系统操作功能,例如迭代目录中的文件。我发现这些对单元测试特别有用。