Pregunta

Tengo std::stringstream objeto ss1. Ahora, me gustaría crear otra copia de éste.

Trato esto:

std::stringstream ss2 = ss1;

o

std::stringstream ss2(ss1)

no funciona ninguno

El mensaje de error es como sigue:

  

std :: ios :: basic_ios (const std :: ios y) no es accesible desde   BSL :: basic_stringstream,   BSL :: asignador> :: basic_stringstream (const   BSL :: basic_stringstream,   BSL :: asignador> &).

¿Fue útil?

Solución

De hecho, las corrientes son no copiable (a pesar de que son móviles).

Dependiendo de su uso, la siguiente funciona bastante bien:

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

Salida:

  

unos 123 cosas
  cerca de 123 cosas

Otros consejos

std::stringstream href="http://www.cplusplus.com/reference/iostream/stringstream/stringstream/" rel="noreferrer"> no proporciona un constructor de copia, usted tiene que construir desde los std::stringoutputs ss1:

std::stringstream ss2(ss1.str());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top