【问题标题】:Qt QString lastIndexOf not workingQt QString lastIndexOf 不起作用
【发布时间】:2016-08-02 15:32:32
【问题描述】:

我正在使用Qt5.6,我正在尝试使用QString 函数lastIndexOf。主题数据包含以下内容:

    156 + (28 * 4) + (14 * 9 * 2)

使用 indexOf:

    int intOpB = strLocalCopy.indexOf(ucOpenBracket);

strLocalCopy 包含主题数据,而 ucOpenBracket 包含 '('.

intOpB 正确返回,为 6。

然后我查找最后出现的 ')':

    int intClB = strLocalCopy.lastIndexOf(ucCloseBracket, (++intOpB));

使用intOpB作为参考,但是lastIndexOf总是返回-1给intClB,为什么?

我正在使用调试器单步执行,因此我可以验证所有变量是否包含它们应该包含的内容。

如果我删除第二个参数它可以工作,但我不明白为什么它不能与提供的参数一起工作。

【问题讨论】:

    标签: c++ qstring qt5.6 lastindexof


    【解决方案1】:

    来自Documentation

    int QString::lastIndexOf(const QString &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

    返回字符串str最后一次出现的索引位置 这个字符串,从索引位置向后搜索。如果从是 -1(默认),搜索从最后一个字符开始;如果 from 为 -2,则在倒数第二个字符处,依此类推。如果 str 不是,则返回 -1 找到了。

    如果 cs 是 Qt::CaseSensitive(默认),则搜索区分大小写; 否则搜索不区分大小写。

    所以搜索从位置 7 开始并向后搜索“)”的最后一次出现,此时在 QString 上的位置 0-7 之间没有任何出现

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多