C++ - многократное использование istringstream

У меня есть код для чтения файлов с плавающими числами в строке, хранящейся так: «3.34|2.3409|1.0001|...|1.1|». Я хотел бы прочитать их с помощью istringstream, но это не работает так, как я ожидал:

  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++;
    }

В отмеченной точке строка копируется в отдельный поток только первый раз. В следующей итерации он не работает и ничего не делает. Я ожидал, что его можно будет использовать больше раз без создания нового объекта istringstream на каждой итерации.


person Naomak    schedule 04.05.2010    source источник


Ответы (2)



Вам нужно добавить строку separate.clear(); после separate.str(row), чтобы сбросить биты состояния, иначе eofbit будет установлен и последующие чтения завершатся ошибкой.

person tzaman    schedule 04.05.2010