c++ - 如何使用 ifstream 和 istreambuf_iterator 将二进制文件读取为 float?

标签 c++ vector floating-point

我将二进制文件读入 uchar vector ,如下所示:

std::ifstream is("path", std::ios::in | std::ios::binary);
std::vector<unsigned char> fileVector((std::istreambuf_iterator<char>(is)),
                                       std::istreambuf_iterator<char>());

但现在我想将字节(4 个相邻字节)读入 float 并创建一个 float vector 。没有 std::istreambuf_iterator<float> .我该怎么做?

最佳答案

void read_feature(std::ifstream& feature_file,float* features) {
  feature_file.seekg(5*sizeof(int));
  feature_file.read((char*)features, 4096*sizeof(float));
}

使用这段代码,您可以从不包括前 5 个整数的数据开始读取一个包含 4096 个元素的 float 组。

关于c++ - 如何使用 ifstream 和 istreambuf_iterator 将二进制文件读取为 float?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24553156/

相关文章:

java - 操作 vector 的单个元素

r - R 中的 for 循环与 while 循环

c++ - clang 格式在单行上捕获空语句

c++ - C++ 项目中未解析的外部符号

C++ std::vector 与现实世界中的数组

c++ - C++ vector 上的分配错误

c++ - 程序流程问题

C# 应用程序无法从 C++ DLL/项目调用方法

c - 为什么用 622080000 替换 622.08E6 时我的代码不起作用?

c - 为什么相同的浮点常量在 Fortran 和 C 中打印不同?