C++ stringstream获取写入数据、复制到另一个流的有效方法
如果不编写自定义rdbuf,有没有办法有效地使用stringstream?也就是说,根据这些要求:C++ stringstream获取写入数据、复制到另一个流的有效方法,c++,C++,如果不编写自定义rdbuf,有没有办法有效地使用stringstream?也就是说,根据这些要求: 可以重置流并重新开始写入,而无需释放以前的内存 获取写入数据的常量字符*(以及长度),而不创建临时字符 在不创建临时字符串的情况下填充流 如果有人能给我一个明确的“不”,那就太好了 现在,我也使用boost,所以如果有人能提供一个可以实现这一点的boost替代方案,那就太好了。它必须同时具有istream和ostream接口。使用。这些类基本上满足您的所有要求 boost::进程间::vect
- 可以重置流并重新开始写入,而无需释放以前的内存
- 获取写入数据的常量字符*(以及长度),而不创建临时字符
- 在不创建临时字符串的情况下填充流
boost::进程间::vectorstream
不会返回const char*
,但会返回对内部容器类的const引用(如内部向量),而不是返回临时字符串副本。另一方面,boost::interprocess::bufferstream
基本上允许您将任何任意缓冲区用作I/O流,让您完全控制内存分配,因此如果需要,您可以轻松使用char
缓冲区
它们都是很棒的类,也是对
std::stringstream
的极好替代,在我看来,它一直受到阻碍,因为它不允许您直接访问内部缓冲区,导致不必要地创建临时字符串对象。遗憾的是,这些类有些晦涩难懂,隐藏在进程间库中。我一直在想这个问题。让我们看看答案是什么。太好了。是的,我从没想过要查看进程间库。我来试试这些。