如何在C ++中从一个stringstream对象复制到另一个?

时间:2010-08-09 17:24:58

标签: c++ stringstream

我有std::stringstream个对象ss1。现在,我想从这个创建另一个副本。

我试试这个:

std::stringstream ss2 = ss1;

或:

std::stringstream ss2(ss1)

既不起作用

错误信息如下:

  无法访问

std :: ios :: basic_ios(const std :: ios&)   BSL :: basic_stringstream,   BSL ::分配器> :: basic_stringstream(常量   BSL :: basic_stringstream,   BSL ::分配器>&安培;)

2 个答案:

答案 0 :(得分:37)

实际上,流是不可复制的(尽管它们是可移动的)。

根据您的使用情况,以下情况非常有效:

#include <iostream>
#include <sstream>

int main()
{
    std::stringstream ss1;
    ss1 << "some " << 123 << " stuff" << std::flush;

    std::stringstream ss2;
    ss2 << ss1.rdbuf(); // copy everything inside ss1's buffer to ss2's buffer

    std::cout << ss1.str() << std::endl;
    std::cout << ss2.str() << std::endl;
}

输出:

  

一些123东西
  一些123东西

答案 1 :(得分:6)

作为std::stringstream does not provide复制构造函数,您必须从std::string ss1输出构建它:

std::stringstream ss2(ss1.str());