我有std::stringstream
对象ss1
.现在,我想从这个创建另一个副本.
我试试这个:
std::stringstream ss2 = ss1;
Run Code Online (Sandbox Code Playgroud)
要么:
std::stringstream ss2(ss1)
Run Code Online (Sandbox Code Playgroud)
既不起作用
错误消息是这样的:
无法从bsl :: basic_stringstream,bsl :: allocator> :: basic_stringstream(const bsl :: basic_stringstream,bsl :: allocator>&)访问std :: ios :: basic_ios(const std :: ios&).
GMa*_*ckG 38
实际上,流是不可复制的(尽管它们是可移动的).
根据您的使用情况,以下情况非常有效:
#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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
123个东西
有123个东西
由于std::stringstream
不提供复制构造函数,您必须从std::string
ss1
输出构建它:
std::stringstream ss2(ss1.str());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18065 次 |
最近记录: |