comment "ré-initialiser" un flux
Bonsoir à tous!
J'avais besoin de "caster" un string appartenant à une classe en int et en suivant la faq j'y suis arrivé:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| std::istream& operator>>(std::istream& istr,CCoord& c)
{
char col;//les futurs coordonnees
int y; //****************************
istr>>col>>y;//Leurs affectations
//test aff
std::cout<<"x = "<<col<<"\ty = "<<y<<std::endl;
int icol; //pour le "cast" du char en int
icol=int(col);//*****************************
//nouvelle affectation de c
c=CCoord(icol-96,y); //col-96 pour transposer sur la valeur numeraire de la colonne
std::cout<<"coord: ";c._affiche();std::cout<<std::endl;
return istr;
} |
seulement voila je ne parviens pas à utiliser ce code plusieurs fois consécutivement. Voici la portion de code qui bloque: (m_isstr est un std::istringstream membre d'une classe)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| case LONGMVT:std::cout<<"Traitement du LONGMVT"<<std::endl;
//repartition des elements de la chaine en plusieurs strings
m_scoordo.assign(m_flux,0,2);m_scoordc.assign(m_flux,2,2);
//separation des valeurs par un espace
m_scoordo.insert(1," ");m_scoordc.insert(1," ");
//test aff
std::cout<<"m_scoordo : "<<m_scoordo<<"\tm_scoordc : "<<m_scoordc<<std::endl;
//on affecte les membres m_coordx via m_isstr (istringstream)
m_isstr.str(m_scoordo);m_isstr>>m_coordo;
m_isstr.str(m_scoordc);m_isstr>>m_coordc; --> les valeurs extraites içi
sont chaotiques. Si je commente la ligne,
le code marche...une fois. Puis je me retrouve face au même problème.
std::cout<<"Test aff: coord org = ";m_coordo._affiche();
std::cout<<"\tcoord cib = ";m_coordc._affiche();
std::cout<<std::endl;
break; |
J'ai essaiyé de "ré-initialiser le istringstream avec .str("") mais rien n'y fait. Je continue de chercher mais si quelqu'un sait...merci.