我正在使用Ubuntu 10.04和gcc。我有我自己的幻數的二進制文件。當我讀取文件時,幻數不一樣。溪流接縫是正確的。std :: fstream似乎以不同的大小讀取
書寫神奇的數字:
std::fstream chfile;
chfile.open(filename.c_str(), std::fstream::binary | std::fstream::out);
if (chfile.good())
{
chfile << (unsigned char)0x02 << (unsigned char)0x46 << (unsigned char)0x8A << (unsigned char)0xCE;
// other input
chfile.close();
}
閱讀神奇的數字:
std::fstream chfile;
chfile.open(filename.c_str(), std::fstream::binary | std::fstream::in);
if (chfile.good())
{
unsigned char a,b,c,d;
chfile >> a;
chfile >> b;
chfile >> c;
chfile >> d;
printlnn("header must : " << (int)0x02 << ' ' << (int)0x46 << ' ' << (int)0x8A << ' ' << (int)0xCE); // macro for debugging output
printlnn("header read : " << (int)a << ' ' << (int)b << ' ' << (int)c << ' ' << (int)d);
chfile.close();
}
當我使用02 46 8A CE爲神奇的數字,這是正常(如輸出說):
header must : 2 70 138 206
header read : 2 70 138 206
但是當我使用EA 50 0C C5時,輸出是:
header must : 234 80 12 197
header read : 234 80 197 1
最後1是下一個輸入的合法值。那麼,爲什麼他們不同,我如何解決這個問題?
在STL中沒有'fstream',加上我非常懷疑你正在使用它。 – Fanael 2012-02-27 17:50:23
@Fanael我寫過STL的fstream嗎?在標題中它說std :: fstream。如果是這樣,是否有人可以更改標題? – JoshuaBehrens 2012-03-30 00:05:32
是的,你做到了。請參閱[修訂歷史記錄](http://stackoverflow.com/posts/9469361/revisions)。 – Fanael 2012-04-04 11:44:15