boost::splitを使ってはいけない

 全角文字等を扱う文字コードを上手に扱えるようには作られていないようです。使ってみないとわかりません。
 昔もこれと全く同じことでハマったような気がするが、しばらく使っていなかったので再度ハマっている模様。

 booset:regex_token_iterator等を使いましょう。

std::deque<std::string> ssplit(const std::string &_src, boost::regex &_re)
{
	boost::sregex_token_iterator it(_src.begin(), _src.end(), _re, -1);
	boost::sregex_token_iterator e; //デフォルトで終端イテレータのように扱えるらしい
	deque<string> tokens;
	while (it != e)
		tokens.push_back(*it++);
	return std::move(tokens);
}