代码之家  ›  专栏  ›  技术社区  ›  edA-qa mort-ora-y

std::stringstream获取写入数据的有效方法,复制到另一个流

c++
  •  5
  • edA-qa mort-ora-y  · 技术社区  · 14 年前

    如果不编写自定义rdbuf,是否有任何方法可以有效地使用stringstream?也就是说,有了这些要求:

    • 流可以重置并重新开始写入,而无需释放以前的内存
    • 在不创建临时
    • 在不创建临时字符串的情况下填充流

    如果有人能给我一个明确的“不”,那就太好了。

    同时提供istream和ostream接口。

    1 回复  |  直到 14 年前
        1
  •  6
  •   Charles Salvia    14 年前

    使用 boost::interprocess::vectorstream or boost::interprocess::bufferstream . 这些类基本上满足了您的所有需求。

    不会返回 const char* ,但它将返回对内部容器类的常量引用(如内部向量),而不是返回临时字符串副本。另一方面, boost::进程间::缓冲流 基本上允许您使用任意的缓冲区作为I/O流,使您能够完全控制内存分配,因此您可以轻松地使用 char 如果你想缓冲。

    这些都是很好的课程,是 std::stringstream