プロが教える店舗&オフィスのセキュリティ対策術

データファイル 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++ のコードの中でできる方法をぜひご教授下さい。お待ちしております。

A 回答 (1件)

std::stringに読み込んでいるなら↓でどうでしょうか?


http://goodjob.boy.jp/chirashinoura/id/100.html
    • good
    • 0
この回答へのお礼

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

またよろしくお願いいたします。

お礼日時:2009/03/08 15:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!