如何从文件*中获取和std :: ifstream对象

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

本文关键字:std ifstream 对象 获取 文件      更新时间:2023-10-16

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

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

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

即。我需要以某种方式将文件*分配给ifstream,或者是否有相当于ifstreams的fmemopen()

std::ifstream input(pathToFilters);

nb。请注意,我正在尝试从文件中获得ifstream,而不是逆(已经回答(

谢谢!

而不是打开FILE *,然后尝试从中创建流,几乎可以肯定会更容易创建直接从内存读取的istream

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

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