![](/img/trans.png)
[英]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.