¿Cómo copiar de un objeto a otro stringstream en C ++?
-
27-09-2019 - |
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> &).
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::string
outputs ss1
:
std::stringstream ss2(ss1.str());