c++ - 从二进制文件读取到vector.c++
问题描述
如何从二进制文件(字节,char
在C++中也称为 unsigned )读取到向量,跳过第一个数字为 unsignedint 32
的值,因为第一个值也是向量的大小?
第一个值也是整个文件的大小。
解决方案
你可以尝试这样的事情:
uint32_t data_size = 0;
data_file.read((char *) &data_size, sizeof(data_size));
std::vector<uint8_t> data(data_size);
data_file.read((char *) &data[0], data_size);
上面的代码片段首先从文件中读取数据的大小或数量。使用读入的数量值创建
A。
最后,将数据读入向量。 std::vector
编辑 1:内存映射文件
您可能需要考虑将数据文件作为内存映射文件打开。这是操作系统将文件视为内存的地方。您不必将数据存储在内存中,也不必将其读入。由于内存映射文件 API 因操作系统而异,因此您必须搜索操作系统 API 以了解如何使用该功能。
推荐阅读
- arduino - ESP32/Arduino IDE:使用 ESPHttpUpdate 的 OTA 不断重启
- angular - 升级 Angular - 两个或更多项目使用相同的根警告
- scala - 如何在 spark scala 中保存数据帧之前对 spark 中的列进行分区并删除同一列
- android - Android Okhttp 隐藏内容编码:标头中的 gzip
- flutter - 如果我们从子屏幕导航到父屏幕(使用应用栏中的后退按钮),颤动会调用子屏幕吗?
- r - 有没有办法将几个 excel 文件从 Dropbox 文件夹加载到 R-shiny 应用程序中?
- javascript - 如何在单个标记 vue 传单上使用两个标记道具
- php - (HY000/2002): 无法连接,因为目标机器主动拒绝
- ios - 从核心数据中获取子数
- rust - 为什么 Weak 没有自动取消引用
?