#include "stdafx.h"
#include <iostream>
#include <boost/tokenizer.hpp>
std::string funcReturnsString()
{
std::string ret = "hogege,gehoho";
return ret;
}
int _tmain(int argc, _TCHAR* argv[])
{
boost::char_separator<char> sep(",");
typedef boost::tokenizer< boost::char_separator<char> > CommaTokenizer;
//NG
CommaTokenizer tokens(funcReturnsString(), sep);
for(CommaTokenizer::const_iterator it = tokens.begin(); it != tokens.end(); it++){
std::cout<<*it<<std::endl;
}
//OK
std::string str = funcReturnsString();
CommaTokenizer tokens(str, sep);
for(CommaTokenizer::const_iterator it = tokens.begin(); it != tokens.end(); it++){
std::cout<<*it<<std::endl;
}
return 0;
}
- ある開発者の覚書 - ソフトウェア開発者が情報処理に関する雑多な話題をジャンルを問わずに書き留めています.未来の私、私と同類のgeekたちへ
2009-03-29
boost::tokenizer はコンテナのコピーを作成しない
一時オブジェクトを渡すと後でイテレータアクセスの際にアクセスバイオレーションになります。ご注意を
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿