Как скопировать из одного объекта stringstream в другой в C ++?

У меня есть объект std :: stringstream ss1 . Теперь я хотел бы создать еще одну копию из этого.

Я пытаюсь это:

std::stringstream ss2 = ss1;

или:

std::stringstream ss2(ss1)

ни работает, ни

Сообщение об ошибке выглядит так:

std :: ios :: basic_ios (const std :: ios &) недоступен из Я хотел бы создать еще одну копию из этого. Я пытаюсь это: std :: stringstream ss2 = ss1; или: std :: stringstream ss2 (ss1) не работает. Ошибка ...

У меня есть объект std :: stringstream ss1 . Теперь я хотел бы создать еще одну копию из этого.

Я пытаюсь это:

std::stringstream ss2 = ss1;

или:

std::stringstream ss2(ss1)

ни работает, ни

Сообщение об ошибке выглядит так:

std :: ios :: basic_ios (const std :: ios &) недоступен из Я хотел бы создать еще одну копию из этого. Я пытаюсь это: std :: stringstream ss2 = ss1; или: std :: stringstream ss2 (ss1) не работает. Ошибка ...

У меня есть объект std :: stringstream ss1 . Теперь я хотел бы создать еще одну копию из этого.

Я пытаюсь это:

std::stringstream ss2 = ss1;

или:

std::stringstream ss2(ss1)

ни работает, ни

Сообщение об ошибке выглядит так:

std :: ios :: basic_ios (const std :: ios &) недоступен из BSL :: basic_stringstream, BSL :: Распределитель> :: basic_stringstream (Const BSL :: basic_stringstream, bsl :: allocator> &).

25
задан Ahmad Shakib 8 May 2018 в 10:45
поделиться

2 ответа

Действительно, потоки не копируемы (хотя и перемещаемы).

В зависимости от вашего использования, следующее работает достаточно хорошо:

#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;
}

Вывод:

some 123 stuff
некоторые 123 вещи

38
ответ дан 28 November 2019 в 21:00
поделиться

Поскольку std :: stringstream не предоставляет конструктор копирования, вы должны построить его из std :: string ss1 выводит:

std::stringstream ss2(ss1.str());
8
ответ дан 28 November 2019 в 21:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: