C++ - à plusieurs reprises à l'aide de istringstream
J'ai un code pour la lecture de fichiers avec flotteur de numéros sur la ligne stockées comme ceci: "3.34|2.3409|1.0001|...|1.1|". Je tiens à les lire à l'aide de istringstream, mais il ne fonctionne pas comme je m'attends:
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 point marqué, ligne est copié dans flux distinct seulement pour la première fois. Dans la prochaine itération cela ne fonctionne pas et il ne fait rien. J'ai prévu, il est possible d'être utilisé plusieurs fois sans que la construction de nouvelles istringstream objet dans chaque itération.
OriginalL'auteur Naomak | 2010-05-04
Vous devez vous connecter pour publier un commentaire.
Après le réglage de la ligne dans la istringstream...
... le réinitialiser en appelant
Cela efface tout iostate indicateurs qui sont définis dans l'itération précédente ou par réglage de la chaîne.
http://www.cplusplus.com/reference/iostream/ios/clear/
Est-il réellement besoin de l'être après? Je pense que vous pouvez le désactiver avant de trop.
OriginalL'auteur Adam Holmberg
Vous avez besoin d'ajouter un
separate.clear();
ligne aprèsseparate.str(row)
pour effacer les bits d'état, sinon leeofbit
est défini et les lectures suivantes échouer.OriginalL'auteur tzaman