C ++ – repetidamente usando istringstream

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 era de esperar:

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 una secuencia separada solo la primera vez. En la siguiente iteración, no funciona y no hace nada. Esperé que se pueda 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 de iostate que están establecidos en la iteración anterior o configurando la cadena. http://www.cplusplus.com/reference/iostream/ios/clear/

Necesita agregar un separate.clear(); línea después de separate.str(row) para borrar los bits de estado; de lo contrario, se eofbit el eofbit y fallan las lecturas subsiguientes.