【发布时间】:2016-05-04 16:44:41
【问题描述】:
我有一个方法deserialize 引用打开的std::istream,通常我会传入一个std::ifstream 以std::ios::binary 选项打开。
现在我想用一些二进制(十六进制)文字对其进行测试,但我不知道如何将该数据输入std::istream。
我在 answer 中尝试过类似的东西
struct membuf : std::streambuf
{
membuf(char* begin, char* end)
{
this->setg(begin, begin, end);
}
};
int main()
{
char buffer[] = "0a0b0c0d000000480000000000420410000";
membuf sbuf(buffer, buffer + sizeof(buffer) - 1);
std::istream in(&sbuf);
deserialize(in);
}
失败是因为该数据不是以二进制形式读取/提供的。
我该怎么做?
【问题讨论】:
-
你忘记
std::istringstream了吗? -
@LogicStuff 你能在这里解释一下如何使用它吗?
-
我误解了一点。你刚刚得到了答案。
-
@LogicStuff 这就是我的想法;d 我不认为我可以在这里使用
istringstream