2014-09-25 152 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(),它會給你一個放置目錄,文件等的地方。

它還包括標準庫沒有的其他文件系統操作功能,比如迭代目錄中的文件。我發現這些對單元測試特別有用。