【发布时间】:2020-05-15 03:25:47
【问题描述】:
我正在使用一个第三方库,它需要一个 ifstream 对象作为输入,我有一个 stringstream 对象,其中包含他们需要的一切。现在,我必须将 stringstream 的内容写入文件,然后将 ifstream 对象发送到库。我想知道是否可以在内存中直接将 stringstream 转换为 ifstream,这样我就不需要在磁盘上写入文件?谢谢。
【问题讨论】:
-
我认为当图书馆坚持使用
fstream而不是接受istream时,图书馆就坏了。你确定它必须是文件流吗?它是什么图书馆? -
函数采用
std::ifstream,还是std::istream?前者是糟糕的设计,后者会让你将stringstream直接传递给函数。 -
除了对坚持使用
std::ifstream而不是std::istream的库的质量的担忧之外,可能还有一种解决方法,但我不确定是否会失败。使用派生缓冲区,流的行为可能会改变(例如这里:SO: How to convert QByteArray to std::istream or std::ifstream?),这也可能适用于std::ifstream。我在github: zstr 中找到了派生std::ifstream的示例。 -
fwiw 我恢复了标签的添加,因为我理解这个问题是关于避免处理文件而不是文件处理
标签: c++ ifstream stringstream