バイナリファイルの処理に使用する小さなツールを作成しました。ファイルの読み取りと処理に関連するすべての関数はテンプレート化されており、次のようになっています。
template <class T> void processFile( const char* fileName );
テンプレートパラメータT
は、読み取られて1つのアイテムとして扱われるデータのサイズを決定するために使用されます。正確に言う方法がわからないので、小さな例です(これらは、16進エディターで見られるバイナリデータであることに注意してください)。ファイルの内容:
BEEF1234DEAD5678
T
unsigned charの場合、アイテムは次のとおりです。unsigned intの場合、アイテムは次のとおりです。double
のBE EF 12 34 DE AD 56 78
場合:T
BEAF1234 DEAD5678
T
BEAF1234DEAD5678
(ここでunsigned char
は、1バイト、unsigned int
4バイト、double
8バイトの大きさであると想定していることに注意してください。)T
STLコンテナーも頻繁に使用するため、STLコンテナーにも使用されます(ベクトル、マップ、およびリストは、ファイルの処理に関連する関数)。組み込みのデータ型(char、intなど)ですべてが完全に正常に機能します。
さて、私の問題は何ですか。1、4、8とは異なるサイズで作業できるようにしたいと思います。たとえば、16、32、さらには6、10、14などです。私が知る限り、これらのサイズの組み込みタイプはありません。どうすればこれを達成できますか?私の主な関心事は、STLコンテナー内のデータが必要であり、たとえばsort()を使用することです。POD構造は機能しますか?読み取りには主にC関数を使用していることに注意してください(ここにはストリームはありませんが、memcpyとmemcmp、freadなどがあります)。
これ以上コードを提供しないことをお詫びします。現在、予備のラップトップを使用しています。しかし、私はそれ以上のコードは必要ないはずだと信じています。もしそうなら、私は明日それを提供します。