Если фреймворк принимает только имя файла, вы должны передать ему имя файла. Это означает, что данные должны находиться в файловой системе.
Переносимый ответ: «записать свои данные во временный файл и передать его имя».
В Unix вы можете использовать именованный канал и разветвлять другой поток для передачи данных через канал ...
Но, честно говоря, вам лучше использовать временный файл. Если вам удастся открыть, прочитать и удалить файл достаточно быстро, он, скорее всего, никогда не попадет на диск, поскольку ядро будет кэшировать данные.
И если вы можете использовать виртуальный диск (tmpfs), вы можете гарантировать, что все происходит в памяти.
[править]
Еще одна мысль. Если вы можете изменить свою кодовую базу для работы на std::iostream
вместо std::fstream
, вы можете передать ей std::stringstream
. Они поддерживают все обычные iostream
операции с буфером памяти, включая такие вещи, как поиск.