我有一个代码:
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_source
、basic_array_sink
和basic_array
提供对内存中字符序列的访问。的阵列设备不管理基础字符的生存期序列。阵列设备被实现为直接设备,以便提供对底层字符的高效无缓冲访问序列。