Duplicar posibles:
How to reuse an ostringstream?¿Cómo se borra una instancia std :: ostringstream para que se pueda reutilizar?
He estado usando std::ostringstream
para convertir float
y int
valores a cadenas pero no encuentro forma de reutilizar una instancia. Para ilustrar lo que quiero decir aquí es la siguiente, junto con los métodos que he tratado de usar para limpiar la corriente
#include <iostream>
#include <sstream>
using namespace std;
int main() {
ostringstream stream;
stream << "Test";
cout << stream.str() << endl;
stream.flush();
stream << "----";
cout << stream.str() << endl;
stream.clear();
stream << "****";
cout << stream.str() << endl;
return 0;
}
genera una salida
Test
Test----
Test----****
Esto me está dando un problema ya que estoy teniendo a crear muchas instancias de ostringstream
que es un desperdicio. Claramente clear()
y flush()
no hago lo que necesito así que ¿hay alguna manera de hacer esto? Revisé la documentación al http://www.cplusplus.com/reference/iostream/ostringstream/ pero no hay nada que parezca hacer lo que necesito. ¿Hay alguna forma de restablecer o borrar la transmisión?
+1: estaba a punto de decir lo mismo exacta cosa. Aunque hacer 'stream.str (" ");' siempre me pareció un hack. –
En general, de acuerdo con su publicación a excepción de la parte que comienza con * O mejor aún: * y el resto que sigue. No podrías pensar que es ** mejor **, ¿verdad? –
@HappyGreenKidNaps: Es solo un ejemplo. Por supuesto, podría escribir 'std :: cout << 10' y terminar con eso. Si necesitaba una cadena, diría 'std :: to_string (10)', supongo. –