代码之家  ›  专栏  ›  技术社区  ›  lampak

stringstream如何在内部工作?

  •  5
  • lampak  · 技术社区  · 15 年前

    我问的是表演方面的问题。stringstream仅仅是一个字符串/向量,因此对它的写入可能会导致其整个内容被复制到更大的内存块中,还是以更复杂的方式完成(比如,字符串列表或其他什么)?

    2 回复  |  直到 15 年前
        1
  •  3
  •   usta    15 年前

    如何实现stringstream(或任何与此相关的库功能)取决于标准库供应商。您可以查看编译器附带的sstream头,了解它是如何在那里实现的。从理论上讲。。。

    就实际经验和测量结果而言,ostringstream通常比其他将数据格式化为字符串的方法慢。但是,再次强调,只有在您确定要优化的内容确实是性能瓶颈之后,才能进行优化,否则最多只是浪费时间。

    如果您的测量显示ostringstream的性能对您来说确实是个问题,请考虑使用 Boost.Karma . 当然,使用Posik.CARMA的原因不仅仅是性能,所以如果您正在启动一个新代码,而不是想使用字符串流修改现有代码,那么您可能希望从GEGO中使用因果报应。

        2
  •  4
  •   Steve Jessop    15 年前

    27.7.3/1说 basic_ostringstream 使用 basic_stringbuf . 我认为27.7.1.3/8说 基本字符串

    但我发现标准中的streams部分很难理解,而且总是有“好像”规则。所以我不能向你保证 deque 下面(以及当有人要求字符串/缓冲区时进行合并)实际上是禁止的。