簡體   English   中英

如何在C ++中從一個stringstream對象復制到另一個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM