• 締切済み

C++ でカンマ "," で区切られたデータファイルを読む方法

データファイル sample.dat には各行に次のようなデータが入っています。 Q,1100,ABCD,8.3,100,8.45,200 T,1200,JET,2.5,300 Q,1500,LOCK,55.5,300,55.7,400 T,1700,JET,2.8,200 Q,2100,JET,2.9,300,3.0,600 <解説> *1文字目が"Q" から始まるタイプ行の場合 1つ目の変数:"Q" 2つ目の変数:int 型 3つ目の変数:文字列 4つ目の変数:double 型 5つ目の変数:int 型 6つ目の変数:double 型 7つ目の変数:int 型 *1文字目が"T"から始まるタイプの行の場合 1つ目の変数:"T" 2つ目の変数:int 型 3つ目の変数:文字列 4つ目の変数:double 型 5つ目の変数:int 型 *変数の間は空白スペース無しでカンマ "," で区切られている。(見づらくてすみません。) <質問> このようなファイルを1行ずつ読んで、3つ目の変数が "JET" の行についてのみ、データを格納したいと思っています。3つ目の変数が "JET" でない場合については4つ目以降の変数は読まなくてかまいません。 3つ目の変数が "JET" の行について、"Q" タイプの行については7つの変数をそれぞれベクトル v1, v2, ..., v7、"T" タイプの行では5つの変数をそれぞれベクトル w1, w2, ..., w5 に格納したいです。 Emacs を用いてカンマ "," を空白スペースに変換して前処理をしたデータファイルを読み込むということをやっていましたが、データファイルが2GB もあるため、そのバケツリレーのような手法は諦めました。C++ のコードの中でできる方法をぜひご教授下さい。お待ちしております。

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

std::stringに読み込んでいるなら↓でどうでしょうか? http://goodjob.boy.jp/chirashinoura/id/100.html

patatas
質問者

お礼

D-Matsu 様、早速のご回答ありがとうございました。コンマで分けられているデータを1行まるごと読んで後から分けるというのは、なぜか心理的抵抗があったのですが、うまく行きました。途中、いろいろと勉強にもなりました。 またよろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A