字符串流和二进制数据

stringstream and binary data

本文关键字:数据 二进制 字符串      更新时间:2023-10-16

为了从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;

但我打印了"0"(使用 GCC 构建)。

如果要读取/写入二进制数据,则无法使用<<>>则需要使用std::stringstream::readstd::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';

输出:

1234567890