如何使用STL拆分字符串?

时间:2015-02-17 12:45:52

标签: c++ string split

我尝试拆分带有多个分隔符(空格和括号)的字符串,但我设法做的就是使用getline(...)分隔一个分隔符。

以下是我尝试做的一个例子:

hello world(12)

我想把这些作为字符串:

hello
world
(
12
)

任何帮助?

1 个答案:

答案 0 :(得分:3)

你可以简单地进行匹配。使用以下正则表达式,然后在必要时将匹配的结果附加到列表中。

[^()\s]+(?=[()])|[^\s()]+|[()]

<强>代码:

Thanks to @Lightness

#include <regex>
#include <iostream>

int main()
{
    std::string s("hello world(12)");
    std::regex r("[^()\\s]+(?=[()])|[^\\s()]+|[()]");

    auto it  = std::sregex_iterator(s.begin(), s.end(), r);
    auto end = std::sregex_iterator();

    for ( ; it != end; ++it)
        std::cout << it->str() << '\n';
}

DEMO