Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con stringstream

Estas en el tema de problema con stringstream en el foro de C/C++ en Foros del Web. estoy en c++, usando el dev estoy usando el tipo de dato stringstream para convertir un int a un string. de esta manera: (doy un ...
  #1 (permalink)  
Antiguo 08/07/2009, 17:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 237
Antigüedad: 16 años, 2 meses
Puntos: 6
problema con stringstream

estoy en c++, usando el dev

estoy usando el tipo de dato stringstream para convertir un int a un string.
de esta manera:
(doy un ejemplo)

int i = 3;
int k = 5;

string test, test2;
stringstream out;
out << i;
test = out.str();

hasta aca va todo bien, pero cuando quiero convertir el otro int, osea, el k...
out << k;
test2 = out.str();

no me lo convierte bien porque en el buffer quedo el valor anterior.
osea, queda en test2 el string "35" en vez de "5"
es porque no limpie el buffer de out, supongo....

esto se soluciona facil si hago otra variable del mismo tipo de dato de out, por ejemplo out2... pero el problema es que necesito hacer esto en toda una lista
y no queda bien hacer miles de variables stringstream diferentes ni tampoco andar declarando las variables adentro de por ejemplo el for que recorre la lista

se entiende?

entonces quiero saber como limpiar el buffer de out de alguna manera para poder volver a usarlo debajo....
alguien conoce algo ?

ya he probado el metodo flush, el clear, y otros...
de aqui estuve leyendo:
http://www.cplusplus.com/reference/i.../stringstream/

pd: los valores pueden ser de 1 digito o mas... debe andar para todo. yo di el ejemplo con valores sencillos pero tmb anda para 85984 ...etc
saludos
  #2 (permalink)  
Antiguo 10/07/2009, 16:36
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: problema con stringstream

Si tienes que hacer pocas conversiones no veo problemas con definir distintas variables y usarlas por separado.

Si se trata de una lista, entonces supongo que la recorreras usando un ciclo, utilizando un for o un while, y al hacerlo definiras un bloque, usando las llaves.

Cada vez que usas llaves, tienes la oportunidad de definir variables, las que seran "automaticas", vale decir se crearan al entrar el bloque y se destruiran al salir de el.

Código:
while()
{
  stringstream s;  // <-- la variable s se creara aqui

} // <-- la variable s morira' aqui.
  #3 (permalink)  
Antiguo 10/07/2009, 20:43
 
Fecha de Ingreso: marzo-2008
Mensajes: 237
Antigüedad: 16 años, 2 meses
Puntos: 6
Respuesta: problema con stringstream

maestro, es lo que NO QUIERO HACER :P
lo dije en el 1er post.
queria usar algo para limpear el buffer o algo.... eso buscaba
  #4 (permalink)  
Antiguo 11/07/2009, 17:27
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: problema con stringstream

Cita:
Iniciado por razer Ver Mensaje
maestro, es lo que NO QUIERO HACER :P
lo dije en el 1er post.
queria usar algo para limpear el buffer o algo.... eso buscaba
Tienes razon. Mi error.

La alternativa que buscas es hacer esto:

Código:
   int i = 3;
   int k = 5;

   string test, test2;
   stringstream out;
   out << i;
   out >> test;    // sacar desde el stream hacia un string

   out.clear();    // marcar errores posibles como ya manejados

   out << k;
   out >> test2;  // sacar otra vez

   cout << test << " " << test2 << std::endl;
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:35.