我将pgm文件格式读取到内存的功能有问题。
我在以下链接http://www.cse.unr.edu/~bebis/CS308/Code/ReadImage.cpp中使用了源代码。您可以在同一目录中找到其他人;以及CS308中的一些指示;如果您有兴趣。
问题是ifstream ifp失败;而且我认为这一段代码可能是原因;但是我看起来不错。
任何想法将不胜感激
charImage = (unsigned char *) new unsigned char [M*N];
ifp.read( reinterpret_cast<char *>(charImage), (M*N)*sizeof(unsigned char));
if (ifp.fail()) {
cout << "Image " << fname << " has wrong size" << endl;
exit(1);
}
最佳答案
问题是您的输入文件格式不正确。它应该有足够的数据来填充charImage,但是没有,这就是失败的原因。另一种可能性是您试图在Windows上运行此代码,并且需要以二进制模式打开文件。
具体来说(对于二进制部分)更改:
ifp.open(fname, ios::in);
至:
ifp.open(fname, ios::in | ios::binary);
顺便说一句,通常不适合使用新运算符的结果。在这里,这只是多余的,没有任何意义。
关于c++ - Ifstream因未知原因失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13222496/