[英]How copy from one stringstream object to another in C++?
我有std::stringstream
對象ss1
。 現在,我想從這個創建另一個副本。
我試試這個:
std::stringstream ss2 = ss1;
要么:
std::stringstream ss2(ss1)
既不起作用
錯誤消息是這樣的:
無法從bsl :: basic_stringstream,bsl :: allocator> :: basic_stringstream(const bsl :: basic_stringstream,bsl :: allocator>&)訪問std :: ios :: basic_ios(const std :: ios&)。
實際上,流是不可復制的(盡管它們是可移動的)。
根據您的使用情況,以下情況非常有效:
#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東西
由於std::stringstream
不提供復制構造函數,因此必須從std::string
ss1
輸出構建它:
std::stringstream ss2(ss1.str());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.