Завершение кода. Это помогает много с исследованием кода.
Похоже, вам нужно будет написать свою собственную TokenizerFunction , чтобы делать то, что вы хотите.
Один из вариантов - попробовать boost :: regex. Не уверен в производительности по сравнению с кастомным токенизатором.
std::string s = "dolphin--monkey--baboon";
boost::regex re("[a-z|A-Z]+|--");
boost::sregex_token_iterator iter(s.begin(), s.end() , re, 0);
boost::sregex_token_iterator end_iter;
while(iter != end_iter)
{
std::cout << *iter << '\n';
++iter;
}
использование iter_split позволяет использовать многосимвольные токены.
Приведенный ниже код даст следующее:
дельфин
мон-ключ
baboon
#include <iostream>
#include <boost/foreach.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/iter_find.hpp>
// code starts here
std::string s = "dolphin--mon-key--baboon";
std::list<std::string> stringList;
boost::iter_split(stringList, s, boost::first_finder("--"));
BOOST_FOREACH(std::string token, stringList)
{
std::cout << token << '\n'; ;
}