C++;QT从QString获取部分

C++;QT从QString获取部分,qt,qstring,qtgui,Qt,Qstring,Qtgui,我有自定义的(动态QString),比如像这样的123+555,我需要在+之后得到它。也可以有不同的东西,然后+(/,*,-等等)。我的问题是如何在一些字符之后获取字符串的一部分。使用函数,它允许您指定分隔符并返回元素列表 QString string("123+555"); QStringList listItems = string.split('+', QString::SkipEmptyParts); QString finalString = listItems[1]; 或者,您可以

我有自定义的(动态QString),比如像这样的123+555,我需要在+之后得到它。也可以有不同的东西,然后+(/,*,-等等)。我的问题是如何在一些字符之后获取字符串的一部分。

使用函数,它允许您指定分隔符并返回元素列表

QString string("123+555");
QStringList listItems = string.split('+', QString::SkipEmptyParts);
QString finalString = listItems[1];

或者,您可以选择分隔字符的位置,并将其与对

的调用一起使用,因为您使用的是Qt,您可以尝试以下类:

使用这样的类,您可以编写如下代码:

// This code was not tested.
QRegExp rx("(\\d+)(\\+|\\-|\\*|/)(\\d+)");  // Be aware, I recommend you to read the link above in order to see how construct the proper regular expression.
int pos = rx.indexIn("23+344");
if (pos > -1) {
    QString number_1 = rx.cap(1);  // "23"
    QString op       = rx.cap(2);  // "+"
    QString number_2 = rx.cap(3);  // "344"
    // ...
}

这样,您就不必编写代码来检查哪些字符(运算符)“+,-,*,/”存在,然后根据找到的字符对字符串执行拆分。

您能给我更多的信息吗,我不知道如何只获取一部分,拆分后,这里有一个列表,您将有一个包含2项的列表[123555]。最后一行引用列表中的第二项,即“+”之后的字符串,非常感谢,先生。在这种情况下,QString::split可以正常工作。如果您需要更多的控制,请查看QRegularExpression。