CSVデータの読み込み2006/04/16 08:49

海の中道の夕日

測定データの読み込みをしないといけなくなったけど、測定データって フォーマットが機器によって違うので、読み込むのが大変。スペース区切りなら、簡単なんだけど "," (カンマ)区切りの場合、結構やっかい。 ちなみに、C なら、

 char *p = "1,2,3,4,5,";
 char *ptr;
 for( ptr = strtok( p, ",");ptr !=NULL; p=strtok(0,",") ){
   int d = atoi( ptr );
 }

なんて感じで読み込めるけど、C++ の時には string 型を使いたい。 いろいろ、調べてみたけど、今のところ、こんな感じしか思いつかない。

 string str = "1,2,3,4,5";
 istringstream stream( str );
 string buf;
 while( getline(stream, buf, ',') ){
   int d;
   istringstream is( buf );
   if( !(is >> d) ){
     cout << "Error" << endl;
   }
 }

って感じかな。もっと、上手に読み込みが出来そうな気もするけど。。。

C++ への道は結構険しい。