因此,我試圖編寫一個C++程序,將整個文件讀入內存(二進制)。內存塊顯然是個char數組。文件讀取成功,但是當我遍歷值,其中一些是不是字節,像4294967295按字節讀取文件字節,給出了損壞的數據
我真的搜查,嘗試了一切,但沒有任何工程。 值得一提的是,在閱讀文件(這是文本)時,我沒有這個問題。
這裏是代碼:
char* XFile;
ifstream::pos_type Size;
bool LoadFile(string FileName)
{
cout << "Opening File: " << FileName << endl;
ifstream FS(FileName.c_str(),ios::in | ios::binary | ios::ate);
if (!FS.is_open())
return false;
Size = FS.tellg();
cout << "File Size: " << Size << " bytes" << endl;
XFile = new char[Size];
FS.seekg(0, ios::beg);
FS.read(XFile,Size);
for (int i = 0; i < 100; i++) // This loop is to test the read bytes (for example purposes)
cout << static_cast<unsigned>(XFile[i]) << "\n";
FS.close();
return true;
}
有一件事要提,我使用Ubuntu 13.04和g ++可能是重要的4.7 – 2013-05-10 16:11:35
是什麼'的sizeof(無符號)'我不認爲你得到一個char那裏。 – lcs 2013-05-10 16:14:00