Проблема C ++ ifstream. Я хочу прочитать «координаты» из файла .csv, но каким-то образом код читает файл дважды и ставит странные числа. - PullRequest
0 голосов
/ 19 апреля 2020

У меня проблема при попытке прочитать координаты из файла .csv в 2d массив, чтобы использовать его в качестве входных данных для модели линейной регрессии. Я знаю, как читать из файла в массив, но мне нужна была информация Файл должен быть двойным, а не строковым, поэтому я подумал, что должен увидеть, какой будет вывод. Я не могу понять это правильно. Проблема в том, что строки файла читаются по 30 раз каждая, и я не могу понять это. Код здесь:

    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <string>
    #include <cmath>
    #include <limits>
    #include <iomanip>
    #include <vector>
    using namespace std;


    int main()
    {
           cout<<setprecision(10);
           //vector<vector<double> > observ_matr;
           ifstream myfile("Salary_Data.csv");
           vector<vector<double> > vec;
           string line;
           while(getline(myfile,line))
           {
                  stringstream lineStream(line);
                  string cell;
                  vector<double> temp_vec;
                  while(getline(lineStream, cell, ','))
                  {
                          temp_vec.push_back(atof(cell.c_str()));
                  }
                  vec.push_back(temp_vec);
           }
           for(int i=0;i<vec.size();i++)
           {
                  for(int j=0;j<vec.size();j++)
                  {
                          cout<<vec[i][j]<<"\t\t";
                  }
                  cout<<endl;
           }
           //cout<<vec[1].size();

           return 0;
     }

"myfile" это, этот файл .csv

Вывод, который я получаю после выполнения кода, такой :

1 Ответ

0 голосов
/ 19 апреля 2020

Проблема здесь ...

    for (int j = 0; j < vec[i].size(); j++) // vec[i].size() instead of vec.size()
...