C ++中的字符串标记器,允许使用多个分隔符

可能重复:
C ++:如何分割一个字符串?

有没有办法使用多个分隔符来标记C ++中的字符串? 在C#中我会完成:

string[] tokens = "adsl, dkks; dk".Split(new [] { ",", " ", ";" }, StringSplitOptions.RemoveEmpty);

使用boost :: tokenizer。 它支持多个分隔符。

事实上,你甚至不需要boost :: tokenizer。 如果你想要的只是一个分割,使用boost :: split。 该文档有一个示例:http://www.boost.org/doc/libs/1_42_0/doc/html/string_algo/usage.html#id1718906


像这样的事情会做:

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);
        }
}
链接地址: http://www.djcxy.com/p/19585.html

上一篇: A string tokenizer in C++ that allows multiple separators

下一篇: c++: Split string by delimiter