0

我是 C++ 的新手,我想做的是从 .csv 文件中读取并将其存储在向量中然后显示,我的问题是代码在最后一个 reqd 条目显示后崩溃从终端运行时文件,但在 ide(代码块)中,当我尝试调试它时,它说 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();
}
4

1 回答 1

1

不能保证 'v' 包含三个或更多元素。在调用 split_at_commas 之后和在调试器中打印之前检查 'v' 的内容,以验证 v 是否包含 3 个或更多项目。

于 2012-11-21T11:40:27.543 回答