Чтение в списке csv-операций с префиксом в C ++ - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь прочитать список с плавающей точкой, отформатированный как пример ниже, из файла и в вектор, и распечатать их снова. Есть ли способ изменить поток или итератор, чтобы удалить 'f', который указывает float, и правильно проанализировать данные с минимальными изменениями?

1.5f, 2.0f, 4.0f, 1.0f, 1.0f, 2,0f, 4,0f, 2,0f, 1,0f, 0,0f, 0,0f, 1,0f, 9,0f

Код здесь

std::ifstream infile("matrices.txt");
std::string s;
std::vector<float> A;

std::getline(infile,s,'\n');
std::stringstream mss(s);
std::copy(std::istream_iterator<float>( mss ), std::istream_iterator<float>(),std::back_inserter(A));    
std::copy(A.begin(), A.end(), std::ostream_iterator<float>(std::cout, ", "));

1 Ответ

1 голос
/ 25 января 2020

Вы можете запросить stringstream игнорировать 2 символа каждый раз при извлечении плавающей запятой.

  float x{};
  while (!mss.eof())
  {
      mss >> x;
      mss.ignore(2);
      vfloats.push_back(x);
  }
...