2016-08-02 154 views
0

我正在使用Qt5.6,我试图使用QString函数lastIndexOf。主题数据包含类似:Qt 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,为什么?

我使用调试器单步执行,因此我可以验证所有变量都包含他们应该做的事情。

如果我删除了它的第二个参数,但我不明白为什么它不适用于提供的参数。

回答

0

Documentation

INT的QString :: lastIndexOf(常量的QString & STR,INT从= -1, Qt的:: CaseSensitivity CS = Qt的::区分大小写)const的

返回该字符串str的最后一次出现的索引位置 该字符串,从索引位置向后搜索。如果从 -1(默认值),则搜索从最后一个字符开始;如果从-2到最后一个字符等等。如果str不是 ,则返回-1。

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

所以搜索从位置7开始和向后搜索的最后一次出现“)”,它在这一点上有QString的

+0

位置0-7之间没有谢谢你,是有道理的。 – SPlatten