hoge diary - November 19, 2004

[C++] boost::tokenizer + boost::escaped_list_separator

std::string をトークン列に分解して色々作業する場合,std::istrstream を使うのも手ですが,これでは引用符付きの文字列を分解することができません.

そんなときのお助けライブラリがありました.boost::tokenizer + boost::escaped_list_separator です.

#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
using namespace std;
using namespace boost;

int main() {
  string s = "Field 1 \'putting quotes around fields, allows commas\' \"Field 3\"";
  tokenizer<escaped_list_separator<char> > tok(s, escaped_list_separator<char>("\\", " ", "\"\'"));
  for(tokenizer<escaped_list_separator<char> >::iterator beg=tok.begin(); beg!=tok.end();++beg){
    cout << *beg << "\n";
  }
}

boost::escaped_list_separator 自体が複数の種類の引用符や区切り文字に対応しています.これでトークン分解が簡単にできます.

コメント

名前(何でも可):

テキスト(http:// を含む内容は投稿できません):

トラックバック

トラックバック URI: https://www.pakunet.jp/hoge/trackback/2004111901

トラックバックはありません.


Valid XHTML 1.1! Valid CSS!
© 2004-2009 ぱくちゃん.
Last modified: Sun Nov 04 11:59:23 JST 2007