我将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/

10-10 06:41