2017-09-15 3 views
0

私はバイナリ形式で10個の整数を含むバイナリファイルを持っています。イテレータを使用してそのファイルを通過する方法はありますか?これまでのところ、私はファイルからそれらの数字をツールとして配列に入れています。しかし、配列やベクトルの使用を避けることはできますか?何かが私に+と - を負担する必要があると私に伝えます。私の質問が十分に明確であることを願っています。ファイルを読むために任意のstd::istreamを使用しイテレータを使用してファイルを処理する

+2

aバッファに読み込みます。バッファを配列として扱います。彼らは正しいエンディアン形式であると確信していますか?なぜ彼らは仕事のための正しいツールであるときに配列を避けるのですか? – tadman

+0

@tadmanそれはタスクです:( –

+0

これはコードの難題です** **コードを取得**。CとC++の配列とポインタは同じコインの2つの面を思い出してください。 – tadman

答えて

2

、あなたはstd::istream_iteratorを使用して整数を読み取るためにstd::istream.read()を使用するカスタムoperator>>を定義することができます。例:

struct binary_int 
{ 
    int32_t value; // or whatever type you need 
}; 

std::istream& operator>>(std::istream &in, binary_int &out) 
{ 
    return in.read((char*)&out.value, sizeof(out.value)); 
} 

{ 
    std::ifstream inFile(...); 

    std::istream_iterator<binary_int> iter(inFile); 
    std::istream_iterator<binary_int> end; 

    while (iter != end) 
    { 
     // use iter->value as needed... 
     ++iter; 
    } 
} 
関連する問題