C++ - repeatedly using istringstream

I have a code for reading files with float numbers on line stored like this: "3.34|2.3409|1.0001|...|1.1|". I would like to read them using istringstream, but it doesn't work as I would expect:

  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

In marked point, row is copied into separate stream only first time. In next iteration it doesn't work and it does nothing. I expected it is possible to be used more times without constructing new istringstream object in every iteration.


After setting the row into the istringstream...


... reset it by calling


This clears any iostate flags that are set in the previous iteration or by setting the string. http://www.cplusplus.com/reference/iostream/ios/clear/

You need to add a separate.clear(); line after separate.str(row) to clear the status bits, otherwise the eofbit gets set and subsequent reads fail.

Need Your Help

Why is a div with "display: table-cell;" not affected by margin?

html css

I have div elements next to each other with display: table-cell;.

How do you handle the tension between refactoring and the need for merging?

version-control refactoring release branch merge

Our policy when delivering a new version is to create a branch in our VCS and handle it to our QA team. When the latter gives the green light, we tag and release our product. The branch is kept to