그래서 전체 파일을 메모리 (바이너리)로 읽는 C++ 프로그램을 작성하려고했습니다. 메모리 블록은 분명히 문자 배열입니다. 파일 읽기는 성공했지만 값을 반복 할 때 일부는 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;
}
우분투 13.04와 g ++ 4.7을 사용하고 있습니다. –
무엇이'sizeof (unsigned)'입니까? 저는 당신이 거기에 문자를 넣지 않는다고 생각합니다. – lcs