我嘗試在包含char
和int
& double
頭後的二進制文件閱讀:錯誤讀取二進制文件用C++
// open file
int pos = 0,n;
char str1,str2;
//string str;
ifstream fid(pfad.c_str(),std::ios::binary);
if (fid.good() != 1) {
printf(" ++ Error: The elegant bunch file %s doesn't exist.\n",pfad.c_str());
return 1;
}
// cut the header
while (pos<5) {
if (fid.eof()) {
printf(" ++ Error: elegant bunch file is strange\n");
return 1;
}
fid >> str1;
switch (pos) {
case 0: str2 = '&'; break;
case 1: str2 = 'd'; break;
case 2: str2 = 'a'; break;
case 3: str2 = 't'; break;
case 4: str2 = 'a'; break;
}
if (str1 == str2){
pos ++;
} else {
pos = 0;
}
}
// Read out the data
fid.seekg(19,ios_base::cur);
std::cout << fid.tellg() << std::endl;
fid >> n;
std::cout << fid.tellg() << std::cout;
printf("\n\n%i\n\n",n);
printf("\nOK\n");
return 0;
我與fid >> str1
的作品就好了閱讀字符。如果我試圖用int
這樣做,它會產生某種奇怪的行爲。輸出然後得到
813
-10x6c4f0484
0
從而使第一個數字是在文件中的位置,第二個應該是相同的,但它看起來像一個指向我。任何人都可能試圖澄清我的困惑?
已經提前致謝。
*「任何人都可以嘗試澄清我的困惑嗎?」 - 你的問題本身是以非常混亂的方式寫的。嘗試編輯它,使其更清楚您的問題是什麼請。 – LihO 2013-03-19 11:06:01