続・C++でStringTokenizerっぽいことをやってみる
前回の記事のhaveの指摘に従い、参照渡しをやめてヴェクタを返す関数にしてみた。
std::vector<string>
slice(const std::string source, const std::string dem)
{
std::string::size_type i1 = 0;
std::string::size_type i2 = source.find(dem);
std::vector<string> retval;
if(std::string::npos == i2)
return retval;
std::string s = source + dem;
do{
retval.push_back(s.substr(i1, i2-i1));
i1 = i2+1;
}while(std::string::npos != (i2 = s.find(dem, i1)));
return retval;
}
ちょっと効率は落ちたが、Atomicになったので前回のコードにくらべ、マルチスレッドプログラミングで安全に使えるようになった。
Thanks! nice comment > Have
Categories
programming0 TrackBacks
Listed below are links to blogs that reference this entry: 続・C++でStringTokenizerっぽいことをやってみる.
TrackBack URL for this entry: http://www.argv.org/~chome/blog/mt-tb.cgi/77
