fread を使用して、C++ の外部ファイルから値を読み込もうとしています。値は uint16 として格納されますが、これは C++ には存在しないようです。グーグルで検索したところ、typedef を使用して独自の uint16 を作成している人を見つけましたが、fread(ptr, uint8, 2, file) を使用して、ptr に格納される 2 つの uint8 を読み取ることができるかどうかも疑問に思っています。
これについて最善の方法を知っている人はいますか?
のような固定サイズの整数型がヘッダーuint16_t
で定義されています。<stdint.h>
それを含めると、ビジネスになります。
あなたはおそらく欲しい:
fread(ptr, sizeof(uint8), 2, file)
私には問題ないように思えますが、fread(ptr, 1, 2, file)
さらに優れています。またはfread(ptr, sizeof(uint16_t), 1, file)
。
ptr
これは、変数自体ではなく、データを保存する場所を指すポインターであると想定しています(そうであれば、を使用します&ptr
)。
ただし、一度に 2 バイトを読み取ると、パフォーマンスの問題が発生する可能性があります。メモリ バッファーに読み取ってから解析することを検討してください。
#include <stdint.h>
あなたのためにそれを修正する必要があります
使用できる固定サイズはたくさんありますが、この場合に役立つのは uint16_t と __int16 の 2 つです。