我是C ++的新手,因此也是C ++中的文件处理。
我需要阅读.raw
个16-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}}。所以我想有些事情是不对的。
有人可以在这方面帮助我吗?
答案 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;
}