如何从文件*中获取和std :: ifstream对象
How to get and std::ifstream object from a FILE* one
我试图通过尝试使用Objcopy工具将某些资源文件嵌入二进制对象来重构某些代码/库。这些文件是.txt
和.xml
。
原始库包含一些基于fopen
的文件读/写代码,我由fmemopen()
代替,以便从内存中加载文件,而不是从磁盘中获取文件。
我的问题是,该库还包含一些用于读取磁盘其他文件的std::ifstream
对象,而我的问题是我如何也从内存中读取这些文件?
即。我需要以某种方式将文件*分配给ifstream,或者是否有相当于ifstreams的fmemopen()
。
std::ifstream input(pathToFilters);
nb。请注意,我正在尝试从文件中获得ifstream,而不是逆(已经回答(
谢谢!
而不是打开FILE *
,然后尝试从中创建流,几乎可以肯定会更容易创建直接从内存读取的istream
。
istringstream
从内存缓冲区读取,因此该部分非常简单。
因此,您可以创建一个istringstream
对象,将其传递您要读取的数据,然后将istringstream
传递给期望从流读取的代码。通常,处理流的大多数代码应接受对istream
或ostream
的引用,在这种情况下,它将接受stringstream
以及fstream
。
相关文章:
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- 如何将QByteArray转换为std::istream或std::ifstream?
- 从带有 std::ifstream::read() 的文件中读取 int 遍历 char * 二进制数据
- std::ifstream因某种原因关闭了?
- 自定义类对象的C++向量 - 复制构造函数已删除 - std::ifstream
- std::ifstream 数据类型?
- std::ifstream,使用已删除功能
- std::ifstream 在二进制模式下,语言环境在 C++ 中
- std :: ifstream的开头角色是什么
- 如何从文件*中获取和std :: ifstream对象
- 如何使用行位置在std :: ifstream中导航
- 如何重用包含 std::ifstream 的类
- std::ifstream 将文件读取为 BYTE(无符号字符)而不是字符
- 使用 std::ifstream 读取 ASCII 文本文件C++
- 是否有任何模拟框架可以模拟std :: ifstream和其他I/O库
- Typo:bool to int conversion诱导的std :: ifstream在Linux下的错误
- std::ifstream 和读取文件
- std::ios::binary 或 std::ifstream::binary 和类似
- C++:使用std::ifstream读取二进制文件后删除缓冲区/指针时发生访问冲突