在 C++ 中读取 .raw 文件
Reading .raw file in C++
总的来说,我是 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
。所以我猜有些地方不对。
有人可以在这方面帮助我吗?
默认打开模式是"text",一些字符可能会被丢弃或被视为文件结尾。 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;
}
总的来说,我是 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
。所以我猜有些地方不对。
有人可以在这方面帮助我吗?
默认打开模式是"text",一些字符可能会被丢弃或被视为文件结尾。 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;
}