C ++:使用ifstream读取大型pgm文件

时间:2013-06-30 14:44:24

标签: c++ ifstream pgm

我想使用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

1 个答案:

答案 0 :(得分:1)

operator >>不应用于二进制提取操作。相反,通过使用read,文件将只输入字节:

file.read(reinterpret_cast<char*>(data), sizeof data);