私はcsvのデータの読み書きに取り組んでいます。C++でstring :: eraseを使ってデータを抽出する
私はこの問題を思いつきました。
私はgetline(myfile, myline);
でcsvの行を取っています。すべての無駄な情報を抽出し、必要な特定の '、'(カンマ)の間に部分を保持するためにmylineを関数に送ります。
私はこの機能でこれを実装:
int get_id(string myline) {
int id;
size_t pos;
pos = myline.find(",");
myline.erase((myline.begin() + pos), myline.end());
stringstream converter(myline);
converter >> id;
return id;
}
を私はしたいデータがラインの最初のものであるので、私は一つだけmyline.find(",");
を持っています。私のcsv形式の
例:
id,name,age,address
は、だから私は、私はコメントに入れたときに、それがスムーズに走ったので、私が思う
myline.erase()
でエラーを抱えています。私は
size_t
を
myline.begin()
に追加したのは正しいのだろうか? (コンパイルエラーなし)。データ抽出の考え方としても正しいのでしょうか?
エラーは以下の通りです:
のインスタンス投げた後、いわゆる 'STDを:: length_error' 何を()終了:のbasic_string :: _ S_create
ええ、これは大きなループでこの関数を呼び出すため、非常に妥当と聞こえます。しかし、私はeofをチェックするので、どうやってどう思う? –