使用堆栈分配存储的std兼容stringstream?

时间:2011-12-23 20:34:41

标签: c++

似乎无法在野外找到任何可用的东西,这看起来很奇怪。

所以在我自己推出之前,有没有人知道在堆栈上分配存储的std兼容字符串流?

我正在考虑两种方法来实现这一目标:

最初在堆栈上使用静态大小的缓冲区(可能是模板参数以允许编译时自定义)

  1. 当空间用完时恢复使用动态存储
  2. 当空间用完时,使用alloca增加堆栈存储空间
  3. 这将允许快速输入短于预定大小的字符串的字符串流。

    初始大小的合适选择意味着可以在不经常从堆调整大小的情况下实现日志记录等事情。

1 个答案:

答案 0 :(得分:4)

使用std::basic_stringbuf<char, char_traits<char>, pooled_allocator>可以获得相同的好处,您只需要编写池化分配器。

然后只需创建一个附加到该缓冲区的basic_iostream

或者,创建一个派生自basic_streambuf

的新类

但不要重写stringstream。 iostreams库是通过替换缓冲区对象来扩展设计的。