std::string 与字节缓冲区(C++ 中的差异)

Add*_*ddi 0 c++ arrays string bytebuffer

我有一个项目,使用 boost.asio 套接字在客户端和服务器之间传输数据。一旦连接的一侧接收到数据,它就会将其转换为 of std::vectors std::string,然后通过先前定义的“回调”函数将其传递到数据的实际接收者对象。到目前为止,这种方式工作得很好,只是,我此时使用atoi()和之类的方法to_string将字符串以外的其他数据类型转换为可发送格式并返回。当然,这种方法在网络使用方面有点浪费(特别是当传输的数据量大于单个整数和浮点数时)。因此我想序列化和反序列化数据。实际上,任何序列化方法都会生成字节数组或缓冲区,因此对我来说使用它会很方便std::string。这样做有什么坏处吗?我不明白为什么应该有一次,因为字符串应该只不过是字节数组。

Xir*_*ema 6

就功能而言,没有什么真正的区别。

然而,出于性能原因和代码清晰度原因,我建议使用std::vector<uint8_t>它,因为它使维护代码的任何人都更清楚它是字节序列,而不是字符串。