boost::tokenizer

トップページ > 文字列 >

abstract

必要なヘッダ
<boost/tokenizer.hpp>
出来ること
文字列切り分け
リファレンス
en / jp

sample

サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0]

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

int main()
{
	string str1 = "this   is a   pen";

	// デフォルトでは、区切り文字(空白とかコンマとか)で分割する。
	typedef boost::tokenizer<> tokenizer1;
	tokenizer1 tok1( str1 );

	for( tokenizer1::iterator it=tok1.begin(); it!=tok1.end(); ++it )
		cout << "TOKEN: " << *it << endl;


	string str2 = "20020903";

	// 4文字、2文字、2文字に分割してみる。
	const int offsets[] = {4,2,2};
	boost::offset_separator ofs( offsets, offsets+3 );

	typedef boost::tokenizer<boost::offset_separator> tokenizer2;
	tokenizer2 tok2( str2, ofs );

	for( tokenizer2::iterator it=tok2.begin(); it!=tok2.end(); ++it )
		cout << "TOKEN: " << *it << endl;


	return 0;
}

実行例

TOKEN: this
TOKEN: is
TOKEN: a
TOKEN: pen
TOKEN: 2002
TOKEN: 09
TOKEN: 03

etc

まぁ、見たまんまです。コマンドラインの解析とか、 コンマ区切りテキストデータの解釈などに役立ちそう。 wchar_t型文字列の切り分けなども可能なので、 日本語環境でも使えるのではないかと。分割関数をちゃんと用意すれば、 マルチバイト文字列でもOKだと思われます。。

see also

presented by k.inaba (kiki .a.t. kmonos.net) under CC0