繁体   English   中英

如何从FILE *获取std :: ifstream对象

[英]How to get and std::ifstream object from a FILE* one

我试图通过尝试使用objcopy工具将一些资源文件作为二进制对象嵌入来重构一些代码/库。 文件是.txt.xml

原始库包含一些基于fopen文件读/写代码,我将其替换为fmemopen() ,以便从内存加载文件而不是从磁盘获取文件。

我的问题是,该库还包含一些std::ifstream对象,这些对象用于从磁盘读取其他文件,我的问题是如何从内存中也读取这些文件?

即我需要以某种方式将FILE *分配给ifstream,或者是否有等效的fmemopen()用于ifstream。

std::ifstream input(pathToFilters);

注意 请注意,我正在尝试从文件获取ifstream而不是反向(已得到回答)

谢谢!

与其打开一个FILE * ,然后尝试从中创建一个流,几乎可以肯定,创建一个直接从内存中读取的istream会更加容易。

istringstream从内存缓冲区读取,因此该部分非常简单。

因此,您可以创建一个istringstream对象,将要从中读取数据的对象传递给它,然后将istringstream传递给期望从流中读取的代码。 通常,处理流的大多数代码应接受对istreamostream的引用,在这种情况下,它将接受stringstream以及fstream

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM