cricri_ | J'ai un truc bizarre avec ce code :
Code :
- /* ------------------------------------------------------------------------- */
- bool CNumMidasCtrl::ParseLine( string& szLine)
- /* ------------------------------------------------------------------------- */
- {
- string::size_type pos = 0;
- string::iterator it = szLine.begin();
- stringstream sstr;
- string * tszValPt[] = { &m_szX, &m_szY, &m_szZ, &m_szA, &m_szC, NULL};
- string tszNomPt[] = { "X=", "Y=", "Z=", "A=", "C=" }; // no NULL !!
- size_t j = 0;
- if ( szLine.empty())
- return false;
- // Extraction values
- while ( tszValPt[j] != NULL) {
- if ( (pos = szLine.find( tszNomPt[j])) == string::npos)
- return false;
- sstr.str("" );
- it = szLine.begin();
- sstr << &it[pos + 2];
- sstr >> *tszValPt[j];
- // MessageBox( (*tszValPt[j]).c_str());
- ++j;
- }
- return true;
- }
|
szLine :
#1 CH=2 AMP=14.44 X=1344.888 Y=340.024 Z=1423.099 C=351.278 A=1393.488
La dernière valeur, C est null dans ce cas ...
Si je modifie l'ordre d'analyse avin d'analyser X, Y, Z, C, A, ça fonctionne.
Mais dans le désordre, ça ne fonctionne pas, je récupère rien ...
obligé de remplacer :
sstr << &it[pos + 2];
par sstr << &it[pos + 2] << ' ';
bizarre, non ?
|