parsear - string c++
C++-usando repetidamente istringstream (2)
Tengo un código para leer archivos con números flotantes en línea almacenados así: "3.34 | 2.3409 | 1.0001 | ... | 1.1 |". Me gustaría leerlos usando istringstream, pero no funciona como esperaba:
string row;
string strNum;
istringstream separate; // textovy stream pro konverzi
while ( getline(file,row) ) {
separate.str(row); // = HERE is PROBLEM =
while( getline(separate, strNum, ''|'') ) { // using delimiter
flNum = strToFl(strNum); // my conversion
insertIntoMatrix(i,j,flNum); // some function
j++;
}
i++;
}
En el punto marcado, la fila se copia en secuencia separada solo la primera vez. En la siguiente iteración no funciona y no hace nada. Esperaba que se pudiera usar más veces sin construir un nuevo objeto istringstream en cada iteración.
Después de configurar la fila en el istringstream ...
separate.str(row);
... restablecerlo llamando
separate.clear();
Esto borra todos los indicadores iostate que se configuraron en la iteración anterior o estableciendo la cadena. http://www.cplusplus.com/reference/iostream/ios/clear/
Es necesario agregar un separate.clear();
línea después de separate.str(row)
para borrar los bits de estado, de lo contrario el eofbit
se establece y las lecturas posteriores fallan.