現在、値のループを作成することにより、ifstream、read、および reinterpret_cast を使用して C++ で配列を読み取ります。たとえば、ループを作成せずにバイナリ ファイルから unsigned int 配列を一度にロードすることは可能ですか?
どうもありがとうございました
現在、値のループを作成することにより、ifstream、read、および reinterpret_cast を使用して C++ で配列を読み取ります。たとえば、ループを作成せずにバイナリ ファイルから unsigned int 配列を一度にロードすることは可能ですか?
どうもありがとうございました
はい、配列の最初の要素のアドレスと配列のサイズをバイト単位で渡すだけです。
// Allocate, for example, 47 ints
std::vector<int> numbers(47);
// Read in as many ints as 'numbers' has room for.
inFile.read(&numbers[0], numbers.size()*sizeof(numbers[0]));
注: 生の配列を使用することはほとんどありません。配列のように見えるシーケンスが必要な場合は、 を使用しますstd::vector
。配列を使用する必要がある場合、構文は非常に似ています。
バイナリ イメージを読み書きする機能は、移植性がありません。別のマシン、または別のコンパイラを使用する同じマシンでさえ、データを再読み取りできない場合があります。しかし、現在使用しているソリューションでは、すでにその問題を抱えています。