0

まず、「ストリーム」と「バッファ」という言葉を間違って使用したことをお詫びします。

この質問への回答 ->ファイルからデータのブロックを読み取り、そのブロックからベクターに読み取る方法は?

標準ライブラリはファイルからデータを読み取るときに既にバッファリングを行っているため、ファイルからレコードごとまたはブロックごとに読み取ることはあまり効果がないと言われました。さらに、バッファのサイズを変更できるため、ブロックごとに読み取る必要がありません。それで、これをテストするために、私は自分でちょっとした実験をすることにしました。

FILE *file;
file=fopen("out","r");
setvbuf(file,NULL,_IOFBF,1024);
char c=fgetc(file);

2048 文字のファイル「out」があります。setvbuf を介して 1024 バイトのバッファを関連付けました。http://www.cplusplus.com/reference/cstdio/setvbuf/によると、入力操作が (モード _IOFBF で) 要求されると、バッファーは完全にいっぱいになります。だから私が文字を読むように頼むとき

char c=file.get()

バッファは完全に満たされている必要があります。つまり、ファイルの前半が「出力」されている必要があります。

ここで私の質問は、実験を検証できるようにバッファーの内容を表示するにはどうすればよいかということです (私の理解がまったく正しい場合)。

ありがとう。

4

0 に答える 0