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' が 3 つ以上の要素を保持するという保証はありません。split_at_commas の呼び出し後、デバッガーで出力する前に「v」の内容をチェックして、v が 3 つ以上の項目を保持していることを確認します。

于 2012-11-21T11:40:27.543 に答える