2014-09-25 4 views
0

Мне нужно создать временный файл, заполнить его некоторыми данными и отправить результат функции, которая принимает только std::istreams.Создать временный файл в C++

Я попытался с помощью tmpfile() и это работает для моего первого требования - «создать файл и заполнить его с некоторыми данными», но она возвращает FILE* и нет никакого способа, чтобы преобразовать его (насколько я знаю), чтобы std::streams ,

Есть ли способ создания временного файла на C++? Если это невозможно, насколько надежным является tmpnam, чтобы вернуть допустимое имя файла? Кто-нибудь тестировал это на Android или iOS?

EDIT: я не хочу копировать данные в std::stringstream, так как часть моего теста считывает данные с диска.

+1

«* отправить результат функции, которая принимает только std :: istreams. *« Не файл, а: знаете ли вы istringstream? – deviantfan

+0

Я не хочу копировать данные. Часть моих тестов читается с диска ... – Felics

+0

Есть ли какая-то особая причина, по которой вы считаете, что 'tmpnam' не будет делать то, что вы хотите? –

ответ

1

Если вы хотите найти альтернативу std::tmpfile или std::tmpnam, вы можете ознакомиться с библиотекой Boost Filesystem. Он содержит функцию unique_path(), которая даст вам место для размещения каталогов, файлов и т. Д.

Он также включает в себя другие функции манипуляции с файловой системой, которых нет в стандартной библиотеке, например, итерация по файлам в каталоге. Я нашел их особенно полезными для модульных тестов.

Смежные вопросы