Используя повышение:: токенизатор со строковыми разделителями

Завершение кода. Это помогает много с исследованием кода.

11
задан Martin 9 August 2009 в 20:38
поделиться

3 ответа

Похоже, вам нужно будет написать свою собственную TokenizerFunction , чтобы делать то, что вы хотите.

0
ответ дан 3 December 2019 в 08:56
поделиться

Один из вариантов - попробовать 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;
}
1
ответ дан 3 December 2019 в 08:56
поделиться

использование 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';  ;
    }
10
ответ дан 3 December 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: