【发布时间】:2015-02-17 12:45:51
【问题描述】:
我尝试用多个分隔符(空格和括号)分割一个字符串,但由于getline(...),我设法用一个分隔符分割一个字符串。
这是我尝试做的一个例子:
hello world(12)
我想把论文作为字符串:
hello
world
(
12
)
有什么帮助吗?
【问题讨论】:
我尝试用多个分隔符(空格和括号)分割一个字符串,但由于getline(...),我设法用一个分隔符分割一个字符串。
这是我尝试做的一个例子:
hello world(12)
我想把论文作为字符串:
hello
world
(
12
)
有什么帮助吗?
【问题讨论】:
您可以简单地进行匹配。使用下面的正则表达式,然后在必要时将匹配的结果附加到列表中。
[^()\s]+(?=[()])|[^\s()]+|[()]
代码:
#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';
}
【讨论】: