Mam taki problem, że wczytuje linie z pliku CSV, wrzucam to do vectora, ale po ostatniej wczytanej linii, następuje nowa iteracja i wyskakuje mi:
exception: std::invalid_argument at memory location 0x00BBD990.
Chodzi o to, że w "line" siedzi NULL i nie skonwertuje się na float? Czemu w takim razie pętla while nie zatrzymuje się skoro getline() zwróciło NULL?
vector<float> ReadFromFile(const string& path)
{
ifstream file(path);
if (!file)
{
throw runtime_error("Error with opening file. Check path or filename.");
}
else
{
string line;
vector<float> myvec;
float a = 0;
while (getline(file, line,','))
{
a = stof(line); //<- debbuger wskazuje na ta linie
myvec.push_back(a);
}
file.close();
for (auto x : myvec) // tutaj chcialem sprawdzic czy mi wypisze w ogole, usune jak wszystko bedzie dzialac
cout << x << endl;
return myvec;
}
}
Tak wygląda CSV(100 linii):
1.63395160885246,
0.333340160703911,
0.910285099833405,
0.38090163952713,
1.364455789963,
1.19096877760765,
1.46584629894506,
0.582908740538596,
1.19025563504093,
0.819379689553464,
Tak btw, można jakoś usprawnić kod? Np przy użyciu iteratorów?
Z góry dzięki za pomoc ;-)