我有一段代码如下:
char* text = ....
std::istringstream iss(text);
我知道这里创建了一个临时的std::string,然后再次在stringstream对象内复制。有没有一种方法可以从char*构造流而不复制字符串。
我有一段代码如下:
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
:
std::string_view
,这可能将包含在 C++17 标准中。 - themagicalyang