【问题标题】:C++ QT Getting part from QStringC++ QT 从 QString 获取部分
【发布时间】:2015-06-09 14:19:29
【问题描述】:

我有自定义(动态 QString),例如 123+555 之类的东西,我需要在 + 之后得到它。此外,+(/、*、- 等)可能会有不同的东西。我的问题是如何在一些字符之后获取部分字符串。

【问题讨论】:

  • QString::split 在这种情况下可以正常工作。如果您需要更多控制,请查看 QRegularExpression。

标签: qt qstring qtgui


【解决方案1】:

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

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

或者,您可以find by index 分隔字符位置并将其与right 的调用一起使用

【讨论】:

  • 你能给我更多的信息吗,我不明白如何只得到一个部分,这里列出了列表......
  • 拆分后,您将拥有一个包含 2 个项目的列表 [123, 555]。最后一行引用列表中的第 2 项,即 '+' 之后的字符串
  • 非常感谢先生。
【解决方案2】:

由于您使用的是 Qt,您可以尝试以下课程:QRegExp

有了这样的类,你可以编写如下代码:

// 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"
    // ...
}

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

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 2014-12-30
    • 2010-11-01
    相关资源
    最近更新 更多