stringstream和二进制数据

时间:2017-11-05 18:59:32

标签: c++ binary stringstream

为了从std :: basic_stringstream读取/写入二进制数据,需要什么(某些方法覆盖?)? 我正在尝试以下代码,但它不能像我想象的那样工作:

std::basic_stringstream<uint64_t> s;
uint64_t a = 9;
s << a;
uint64_t b;
s >> b;
std::cout << b << std::endl;

但我得到&#34; 0&#34;印刷(用GCC建造)。

1 个答案:

答案 0 :(得分:3)

如果您想要读取/写入二进制数据,则无法使用<<>>,您需要使用std::stringstream::read和{{1}函数。

此外,您还需要使用std::stringstream::write专精,因为只有<char>可以安全地为其他类型添加别名。

所以你可以这样做:

char

<强>输出:

std::stringstream ss;

std::uint64_t n1 = 1234567890;

ss.write((char const*) &n1, sizeof(n1)); // sizeof(n1) gives the number of char needed

std::uint64_t n2;

ss.read((char*) &n2, sizeof(n2));

std::cout << n2 << '\n';