C++相談室 part47
■ このスレッドは過去ログ倉庫に格納されています
0559デフォルトの名無しさん
2006/03/05(日) 17:41:23コンパイラはVC8で, cl code.cppとコンパイルしています。
現在とある画像ファイル形式(パレット方式、\0をランレングス圧縮)を
BMPに変換するコードを書いているのですが、
byte *cdata = new byte[ihead.length];
ifs.read(reinterpret_cast<char*>(cdata),ihead.length);
if(!ifs){
cout << "file read failed" << endl;
return 0;
}
string data = Decode(cdata,ihead); // \0をデコード
delete[] cdata;
この流れで ihead.length==655 にもかかわらず、
ifs.tellp() で読み込みバイト数を調べると、 7000 バイトも読み込んでいるようなのです。
Decode 内で cdata を全て表示させて、ファイルと比較してみたところ、
読み込み位置が 639 バイト目から突然 4000 バイト以上後方にジャンプしていました。
seekg したわけでもないのに read 中にファイル読み込み位置がずれることはあるんでしょうか。
■ このスレッドは過去ログ倉庫に格納されています