C++ 拆分QString时如何转义分隔符?

C++ 拆分QString时如何转义分隔符?,c++,regex,qt,qstring,C++,Regex,Qt,Qstring,如何按字符拆分QString,例如:“+”,并且在转义该字符时不拆分:“\+” 谢谢 应要求,提供更多详细信息: 要拆分的字符串:“a++” 分隔符:“+” 所需的输出:“a”,“+”您将希望与正则表达式一起使用,以拆分除非转义的“+”之外的所有内容: (?:[^\\\+]|\\.)* 因此,给定QString foo,您可以使用 如果不幸的是您既没有Qt5,也没有C++11,也没有Boost,您可以使用: QRegExp条((((?:[^\+]\\\\\\\)*); for(int i

如何按字符拆分
QString
,例如:
“+”
,并且在转义该字符时不拆分:
“\+”

谢谢

应要求,提供更多详细信息:

要拆分的字符串:
“a++”

分隔符:
“+”

所需的输出:
“a”
“+”

您将希望与正则表达式一起使用,以拆分除非转义的
“+”之外的所有内容:

(?:[^\\\+]|\\.)*

因此,给定
QString foo
,您可以使用


如果不幸的是您既没有Qt5,也没有C++11,也没有Boost,您可以使用:

QRegExp条((((?:[^\+]\\\\\\\)*);
for(int it=bar.indexIn(foo,0);it>=0;it=bar.indexIn(foo,it)){
cout如果您可以使用空格作为分隔符,而不是“+”作为分隔符…
splitArgs
是否为您工作:


“(?你能分享你的代码吗?添加了我想要实现的输入和输出。希望这会有帮助。这也应该适用于Qt4,使用
QRegExp
类,而不是
QRegularExpression
或者?因为这让我在拆分
foo++
时有
++
和拆分
foo+bar++
e> 当它应该是
foo、++/code>和
foo、bar
@tobilocker时,您使用的命令是什么,因为这应该也适用于
QRegExp
。因此
QString值是:
“EXPRESSION++”
并使用
qstringlit valuesList=values.split(QRegExp((?:[^+\\\\\\\\\\\\]),QString::SkipEmptyParts);
。我得到:
“+”
@tobilocker您未能正确复制正则表达式。您使用了右括号而不是右括号。感谢您指出这一点,但实际上它在代码中是正确的:)
QRegularExpression bar("((?:[^\\\\\\+]|\\\\.)*)");
auto it = bar.globalMatch(foo);

while(it.hasNext()){
    cout << it.next().captured(1).toStdString() << endl;
}
regex bar("((?:[^\\\\\\+]|\\\\.)+)");
copy(cregex_token_iterator(foo.cbegin(), foo.cend(), bar, 1), cregex_token_iterator(), ostream_iterator<string>(cout, "\n"));
QRegExp bar("((?:[^\\\\\\+]|\\\\.)*)");

for(int it = bar.indexIn(foo, 0); it >= 0; it = bar.indexIn(foo, it)) {
    cout << bar.cap(1).toStdString() << endl;
}