因此istringstream
在初始化时会复制字符串的内容,例如
string moo("one two three four");
istringstream iss(moo.c_str());
我想知道是否有一种方法可以使
std::istringstream
使用给定的c_str
作为其缓冲区而不复制内容。这样,在将std::istringstream&
传递给以istream&
作为参数的函数之前,不必复制大量内存。我一直试图做的就是将一些仅采用
std::ifstream&
参数(它们大多是解析器)的函数转换为也采用istream&
。为此,我需要自己创建istream
子类吗? 最佳答案
编写从给定存储区读取的基本std::streambuf
类相当简单。然后,您可以从中构造一个istream
并从中读取。
initializing a C++ std::istringstream from an in memory buffer?
注意,指向c_str()
的缓冲区的生命周期非常有限,尽管我不知道它在哪里实现,但不能保证对c_str()
的调用会导致某些复制。
关于c++ - 非复制istringstream,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3122901/