我有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 ::分配器>&安培;)
答案 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());