Cppを使ってバイナリファイルを読んでいますが、そのタイプはMsgPackです。 私はMsgPackに精通していないので、私はバイナリファイルの拳を読んでMsgPackをプッシュしようとしています。それは動作しません。それはちょうど最初の番号を何度も何度も取得します。誰も助けることができますか?どうもありがとう。MsgPackをC++で使ってバイナリファイルを読む
#include <bits/stdc++.h>
#include <msgpack.hpp>
using namespace std;
int main()
{
std::ifstream ifs("input.txt", std::ifstream::in);
std::stringstream buffer;
buffer << ifs.rdbuf();
msgpack::unpacked upd;
msgpack::unpack(upd, buffer.str().data(), buffer.str().size());
std::cout << upd.get() << std::endl;
return 0;
}
これは最初の数字「3」を得ることができます。
私は数を得ることを望んだ:
3
[3 6 7 5 3 5]
[6 2 9 1 2 7]
[0 9 3 6 0 6]
そしてhereは、入力バイナリファイルです。
あなたの解答に基づいて、最初の数字は次の配列の数です。それが間違っていて、@Gavin Leeが4つの独立メッセージを解析したければどうなりますか?少なくとも、あなたのforループで 'offset'がまだ' buffer.size() 'よりも小さいかどうかを調べることができます。 – JustRufus