我想使用std :: ifstream加载大小为4096x4096像素的16位二进制PGM图像。问题是我只能加载较小的文件,例如。 512×512。如果我尝试加载“大”数据,我得到的数据对于每个像素总是为0。
示例代码:
int size = width*height;
unsigned short* data = new unsigned short[size];
// Read the terrain data
for(int i = 0; i < size; i++)
{
file >> data[i];
}
如果我手动将尺寸设置为较低的值,这似乎有效。有什么想法吗?
Thx Tim
答案 0 :(得分:1)
operator >>
不应用于二进制提取操作。相反,通过使用read
,文件将只输入字节:
file.read(reinterpret_cast<char*>(data), sizeof data);