/********************************************\
|????歡迎轉(zhuǎn)載, 但請(qǐng)保留作者姓名和原文鏈接, 祝您進(jìn)步并共勉!???? |
\********************************************/
引以為戒
作者: Jerry Cat
時(shí)間: 2006/07/15
鏈接:
http://m.shnenglu.com/jerysun0818/archive/2006/07/15/9931.html
想用IPicture實(shí)現(xiàn)不同圖形文件的讀取操作,結(jié)果OleLoadPicture函數(shù)老是出錯(cuò),最后down了一個(gè)例程居然能用,然后把人家的代碼拷貝過來加以改動(dòng),我的程序也能運(yùn)行了,郁悶。
其實(shí)兩個(gè)程序差別就在文件讀取的那一塊,我用的是STL的fstream,他用的是CreateFile,經(jīng)過反復(fù)調(diào)試才發(fā)現(xiàn)是因?yàn)槲以诖蜷_文件的時(shí)候沒有加上ios::binary,結(jié)果read函數(shù)得不到正確的結(jié)果 %$&@#$ @
幾個(gè)小時(shí)就這樣被耽誤了, 以我為戒!
研究后結(jié)論: 不僅僅是讀文件存在這樣的問題。寫文件如果不是二進(jìn)制的話,也會(huì)出問題的哦。你可以讀取一個(gè)exe的內(nèi)容,然后write到一個(gè)新的空文件。如果不用二進(jìn)制寫入,會(huì)多出不少字節(jié)呢。 原因是0d0a惹的禍。 哈哈:)
而且不僅僅是0D0A,小于0x20的字符都稱為控制字符,在文本方式下其行為由實(shí)現(xiàn)定義。