我正在尝试阅读图片文件。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream read("C://Users/Ben/Desktop/1.jpg");
while (1){
cout << read.get();
cin.get();
}
return 0;
}
当我这样做时,我得到一系列数字,范围从0到255.所以我假设它正确读取字节值,除了我过早地击中-1(eof)的事实。在大约30到40个值之后,出现-1。这是一个3MB的文件。我不希望-1出现,直到稍后。发生了什么事?
答案 0 :(得分:0)
作为@melpomene mentioned in their comment,使用std::ios::binary
模式打开文件的std::ifstream::get()
结果可能会有所不同(至少对于Windows操作系统而言)。< / p>
没有证据表明-1
的{{1}}值表示std::ifstream::get()
流处于read
状态。有关详细信息,请参阅std::ifstream::get()
参考文档。
答案 1 :(得分:-3)
尝试此:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
// Add the mode ios::binary to make the file load in binary format.
ifstream read("C://Users/Ben/Desktop/1.jpg", ios::binary);
// Declare data variable
int data = 0;
// Reading loop
while (read.read((char*)&data, 4) && read.gcount() != 0) {
// Output data
cout << data << endl;
}
// Wait for user input before closing program
cin.get();
return 0;
}