2016-08-02 12 views
0

Ich verwende Qt5.6, ich versuche, die QString-Funktion lastIndexOf zu verwenden. Das Thema Daten enthält so etwas wie:Qt QString lastIndexOf funktioniert nicht

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

Mit indexOf.

int intOpB = strLocalCopy.indexOf(ucOpenBracket); 

strLocalCopy enthält die Subjektdaten und ucOpenBracket enthält '('

intOpB korrekt zurückgegeben wird und 6.

Ich suche dann nach dem letzten Vorkommen von ')':

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

Verwendung von IntOpB als Referenz, aber lastIndexOf gibt immer -1 an intClB zurück, warum?

Ich benutze den Debugger zu Einzelschritt, damit ich überprüfen kann, dass alle Variablen enthalten, was sie sollten.

Wenn ich den 2. Parameter entfernen, funktioniert es, aber ich verstehe nicht, warum es nicht mit dem Parameter funktioniert.

Antwort

0

Vom Documentation:

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

Gibt die Indexposition des letzten Vorkommens der Zeichenkette str in Diese Zeichenkette, die rückwärts von der Indexposition aus sucht. Wenn from ist -1 (Standard), beginnt die Suche beim letzten Zeichen; wenn von ist -2, am vorletzten Zeichen und so weiter. Gibt -1 zurück, wenn str nicht gefunden wurde.

Wenn cs Qt :: CaseSensitive (Standard) ist, wird bei der Suche die Groß- und Kleinschreibung berücksichtigt. Andernfalls wird bei der Suche nicht zwischen Groß- und Kleinschreibung unterschieden.

So beginnt die Suche von Position 7 und sucht rückwärts für das letzte Vorkommen von ‚)‘, die es an diesem Punkt keine 0-7 auf die QString

+0

zwischen den Positionen sind Danke, macht Sinn. – SPlatten

Verwandte Themen