Google で満足のいく答えが見つかりませんでした。C++ の I/O は少しトリッキーです。可能であれば、ブロックごとにテキストファイルをベクターに読み込みたいです。残念ながら、方法がわかりませんでした。I/O はトリッキーなので、無限ループがすべての可能性で中断されるかどうかさえわかりません。だから、私が理解できた最良の方法はこれです:
char buffer[1025]; //let's say read by 1024 char block
buffer[1024] = '\0';
std::fstream fin("index.xml");
if (!fin) {
std::cerr << "Unable to open file";
} else {
while (true) {
fin.read(buffer, 1024);
std::cout << buffer;
if (fin.eof())
break;
}
}
'\0' の 2 行目に注意してください。おかしくないですか?もっと良いことはできますか?データを char 配列ではなくベクターに読み込むことはできますか? ベクトルに直接読み込むのは適切ですか?
回答ありがとうございます。
PS。チャンクごとの読み取りには確かに意味があります。このコードは短いですが、循環バッファーに格納しています。