hoge.dat から読み込み
#include <iostream>
#include <fstream>
...
fstream fin("hoge.dat", ios::open | ios::binary);
if( !fin ){
/* file open error */
}
std::ios::off_type offset = 10; ← 10 byte 分のオフセット
fin.seekg( offset, ios::beg ); ← 読み出し位置を指定
char buf; ← バイナリは char 読み出しが基本。
while( fin.read( &buf, sizeof(char) ) ){
/* TODO */
}
一気に読み出し
char buf[256];
while( fin.read( buf, 256*sizeof(char) ) ){
/* TODO */
}
注. charの符号
gcc では、char は自動的に符号無し8bit整数 unsigned char と解釈される。←されませんでした。
VC++ では、char は自動的に符号有り8bit整数 singed char と解釈される。
したがって 1byte unsigned integer の場合は unsigned char とする。
べきだが、なぜかこうすると read( &buf, ... ) のコンパイルが通らなかった。
← char bufとしておいて,二重キャストで対処。(double) (unsigned char) buf
以下は失敗する!
while( fin >> buf ){
/* tasks with buf */
}
すべてが読み込めないのではなく、一部の、同じ箇所のバイトを飛ばす。謎
最終更新:2010年05月27日 13:25