Строковый токенизатор в C++, который позволяет несколько разделителей

Существует ли способ маркировать строку в C++ с несколькими разделителями? В C# я сделал бы:

string[] tokens = "adsl, dkks; dk".Split(new [] { ",", " ", ";" }, StringSplitOptions.RemoveEmpty);
8
задан Galik 12 June 2018 в 18:48
поделиться

2 ответа

Используйте boost :: tokenizer. Он поддерживает несколько разделителей.

На самом деле, вам даже не нужен boost :: tokenizer. Если все, что вам нужно, это разбиение, используйте boost :: split. В документации есть пример: http://www.boost.org/doc/libs/1_42_0/doc/html/string_algo/usage.html#id1718906

3
ответ дан 5 December 2019 в 23:14
поделиться

Что-то вроде этого подойдет:

void tokenize_string(const std::string &original_string, const std::string &delimiters, std::vector<std::string> *tokens)
{
        if (NULL == tokens) return;

        size_t pos_start = original_string.find_first_not_of(delimiters);
        size_t pos_end   = original_string.find_first_of(delimiters, pos_start);

        while (std::string::npos != pos_start)
        {
                tokens->push_back(original_string.substr(pos_start, pos_end - pos_start));
                pos_start = original_string.find_first_not_of(delimiters, pos_end);
                pos_end   = original_string.find_first_of(delimiters, pos_start);
        }
}
2
ответ дан 5 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

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