Microsoft の cpprest SDK を使用して、インターネット経由でバイナリ データを読み取っています。以下の私の変数stream
は typeconcurrency::streams::istream
です。100 万行の型を読み取って処理しようとしてstruct row
います。要求したすべてのバイトを取得できないことがわかりました。これをコーディングする良い方法があると思いますが、理解できませんでした。また、バッファから行を抽出するためのキャストが正しい方法ではないのではないかと思います。どんな助けでも大歓迎です。
struct row {
unsigned long long tag_id : 32, day : 32;
unsigned long long time;
double value;
};
size_t row_count = 1000000;
concurrency::streams::container_buffer<vector<uint8_t>> buffer;
size_t bytes_requested = sizeof(row) * row_count;
size_t bytes_received = stream.read(buffer, bytes_requested).get();
// bytes_received does not always match bytes requested
for (size_t i = 0; i < row_count; ++i) {
row &r = *(row *) &buffer.collection()[i * sizeof(row)];
// do something with row here
}