Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ stringstream获取写入数据、复制到另一个流的有效方法_C++ - Fatal编程技术网

C++ stringstream获取写入数据、复制到另一个流的有效方法

C++ stringstream获取写入数据、复制到另一个流的有效方法,c++,C++,如果不编写自定义rdbuf,有没有办法有效地使用stringstream?也就是说,根据这些要求: 可以重置流并重新开始写入,而无需释放以前的内存 获取写入数据的常量字符*(以及长度),而不创建临时字符 在不创建临时字符串的情况下填充流 如果有人能给我一个明确的“不”,那就太好了 现在,我也使用boost,所以如果有人能提供一个可以实现这一点的boost替代方案,那就太好了。它必须同时具有istream和ostream接口。使用。这些类基本上满足您的所有要求 boost::进程间::vect

如果不编写自定义rdbuf,有没有办法有效地使用stringstream?也就是说,根据这些要求:

  • 可以重置流并重新开始写入,而无需释放以前的内存
  • 获取写入数据的常量字符*(以及长度),而不创建临时字符
  • 在不创建临时字符串的情况下填充流
如果有人能给我一个明确的“不”,那就太好了

现在,我也使用boost,所以如果有人能提供一个可以实现这一点的boost替代方案,那就太好了。它必须同时具有istream和ostream接口。

使用。这些类基本上满足您的所有要求

boost::进程间::vectorstream
不会返回
const char*
,但会返回对内部容器类的const引用(如内部向量),而不是返回临时字符串副本。另一方面,
boost::interprocess::bufferstream
基本上允许您将任何任意缓冲区用作I/O流,让您完全控制内存分配,因此如果需要,您可以轻松使用
char
缓冲区


它们都是很棒的类,也是对
std::stringstream
的极好替代,在我看来,它一直受到阻碍,因为它不允许您直接访问内部缓冲区,导致不必要地创建临时字符串对象。遗憾的是,这些类有些晦涩难懂,隐藏在进程间库中。

我一直在想这个问题。让我们看看答案是什么。太好了。是的,我从没想过要查看进程间库。我来试试这些。