¿Puede alguien me explique por qué mi salida es esto? Y ¿cómo iba a corregir mi salida?

StackOverflow https://stackoverflow.com/questions/2842728

  •  27-09-2019
  •  | 
  •  

Pregunta

En este trozo de código que consigue una potencia de

bbb 55 66 77 88
aaa

la salida espero y deseo es

bbb 55 66 77 88
bbb

porque ss Reasignar de log[0] a log[1]. Así que mi pregunta es ¿por qué es diferente la salida de lo que cabe esperar y cómo hacer yo cambiarlo a lo que yo quiero?

      int w,x,y,z;
      stringstream ss (stringstream::in | stringstream::out);
      string word;
      string log[2];
      log[0]="aaa 11 22 33 44";
      log[1]="bbb 55 66 77 88";

      ss<<log[0];
      ss>>word;

      int k=0;
      ss>>w>>x>>y>>z;
      k++;

      ss<<log[k];
      cout<<log[k]<<endl;
      ss>>word;
      cout<<word<<endl;
      return 0;
¿Fue útil?

Solución

Cuando

ss >> w >> x >> y >> z;

fue ejecutado, no hay contenido dejó de operar en y ss.good () devuelve falso, que expresa la necesidad de ss.clear llamada () con el fin de asegurar que todo está bien y podemos seguir adelante.

Sin embargo, teniendo en cuenta que lo hace

ss.clear();
ss<<log[k];

El contenido de ss será

aaa 11 22 33 44bbb 55 66 77 88

Si desea esta manera, está bien. Pero tal vez esperaba que contiene

bbb 55 66 77 88

que se realiza por

ss.str(log[k]);
ss.clear();

Otros consejos

Cuando se escribe a la stringstream la segunda vez que el puntero de entrada (tellg) se establece en -1 y la falla bit está establecido. Eso significa que ni el segundo de escritura ni la segunda lectura tienen éxito.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top