用C ++读取.raw文件

时间:2016-06-13 04:35:04

标签: c++ file-handling

我是C ++的新手,因此也是C ++中的文件处理。

我需要阅读.raw16-bit integers文件,该文件有512 x 512,且维度为ifstream myData("myData.raw"); short value; int i = 0; char buf[sizeof(short)]; while (myData.read(buf,sizeof(buf))) { memcpy(&value, buf, sizeof(value)); cout << value << " "; i++; } cout << endl << "Total count: " << i << endl;

为此,我使用以下代码:

i

我为512 x 512获得的价值不是{{1}}。所以我想有些事情是不对的。

有人可以在这方面帮助我吗?

1 个答案:

答案 0 :(得分:1)

默认的开放模式是&#34; text&#34;并且某些字符可能会被删除或视为文件末尾。 ios :: binary阻止了这些改动。

#include <iostream>
#include <fstream>
using namespace std;
int main() {
    ifstream myData("myData.raw", ios::binary);
    short value;
    int i = 0;
    char buf[sizeof(short)];
    while (myData.read(buf, sizeof(buf)))
    {
        memcpy(&value, buf, sizeof(value));
        cout << value << " ";
        i++;
    }

    cout << endl << "Total count: " << i << endl;
}