print mystr biblioteca c++ stringstream

c++ - biblioteca - stringstream mystr



Entero de extracto de Stringstream (4)

¿Por qué estás leyendo una variable de string temporal?

Puede leer desde el stringstream en un int ...

int main() { string Digits("1 2 3"); stringstream ss(Digits); int Temp; vector<int> Tokens; while(ss >> Temp) Tokens.push_back(Temp); }

¿Por qué no puedo extraer un valor entero en la variable Num ?

#include <sstream> #include <vector> #include <iostream> using namespace std; int main() { string Digits("1 2 3"); stringstream ss(Digits); string Temp; vector<string>Tokens; while(ss >> Temp) Tokens.push_back(Temp); ss.str(Tokens[0]); int Num = 0; ss >> Num; cout << Num; //output: 0 }


Cuando la secuencia extraiga el último de los 3 digistores "1 2 3", se establecerá el estado eof. Esto no lo borra el miembro str (), necesita hacerlo usted mismo. Cambia tu código a:

ss.clear(); ss.str(Tokens[0]);


Debes restablecer todos los indicadores de estado (eofbit) y llevar el flujo a un buen estado (goodbit):

ss.clear(); // clear status flags ss.str(Tokens[0]);

La razón es que si sigues extrayendo hasta el final, llegarás al final y el indicador de eof se establecerá en esa secuencia. Después de eso, las operaciones de lectura se cancelarán y tendrá que borrar esa bandera nuevamente. De todos modos, después de borrar y restablecer la cadena, puede seguir extrayendo los enteros.


STL! :PAG

stringstream ss("1 2 3"); vector<int> Tokens; copy(istream_iterator<int>(ss), istream_iterator<int>(), back_inserter(Tokens));