[英]C++ How to assign ifstream content (from file) to string with offset (istreambuf_iterator)
[英]How to read binary file as float with ifstream and istreambuf_iterator?
我将一个二进制文件读取到uchar向量中,如下所示:
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的向量。 没有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个元素的浮点数组。
您必须重新解释强制转换char *
以float *
和取消引用。 这不是一项常见的任务,因此您似乎应该使用这种技巧
for(int i=0;i<fileVector.size();i+=sizeof(float))
{
float f=*((float*)&fileVector[i]);
out.push_back(f);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.