ошибка сегментации в коде

Я новичок, когда дело доходит до c ++, я пытаюсь прочитать файл .csv и сохранить его в векторах, а затем отобразить. Моя проблема заключается в том, что код вылетает после отображения последней записи reqd из файл при запуске из терминала, но в ide (codeblocks) появляется ошибка sigsegv, когда я пытаюсь его отладить …

ps: причина, по которой я хочу прочитать файл в векторах, состоит в возможности войти в mysqldb позже

#include <vector>
#include <string>
#include <sstream>
#include<fstream>
#include <iostream>

using namespace std;
vector<string> split_at_commas(const string& row)
{
vector<string> res;
istringstream buf(row);
string s;
while (getline(buf, s, ','))
res.push_back(s);
return res;
}

int main()
{
string line;
ifstream  data("Book1.csv" ,ios::out);
while(!data.eof())
{
getline(data,line,'\n');
vector<string> v = split_at_commas(line);
/*ide points error to this line*/
cout << v[0] << '\t' << v[1] <<'\t' << v[2]<< '\t'<<endl;
}
data.close();
}

0

Решение

Нет гарантии, что v содержит три или более элементов. Проверьте содержимое ‘v’ после вызова split_at_commas и перед печатью в отладчике, чтобы убедиться, что v содержит 3 или более элементов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]