构造不复制缓冲区的流

  • 本文关键字:缓冲区 复制 c++
  • 更新时间 :
  • 英文 :


我有一个代码:

char* text = ....
std::istringstream iss(text);

我知道这里临时std::string被构造,它再次被复制到stringstream对象中。有没有一种方法可以从char*构造流而不复制字符串?

以前,这个功能是由现在已弃用的std::istrstream:

提供的。

istrstream实现了数组支持的输入操作流。它本质上包装了一个原始数组I/O设备实现(std::strstreambuf)进入更高一级接口std::basic_istream .

istrstream的典型实现只保存一个非派生类数据成员:std::strstreambuf类型的对象。

指出

istrstream自c++ 98以来已被弃用,std::istringstream boost::iostreams::array_source 是推荐的替代品。

因此,当前满足您需求的实现是boost::iostreams::array_source:

概述

类模板basic_array_sourcebasic_array_sinkbasic_array提供对内存中字符序列的访问。的阵列设备不管理基础字符的生存期序列。

实施

阵列设备被实现为直接设备,以便提供对底层字符的高效无缓冲访问序列。

最新更新