Ich benutze Qt Creator, um eine C++ - Anwendung und den Debugger zu entwickeln, um den Code zu untersuchen, ich versuche einige sehr seltsame Ergebnisse zu verstehen, die vom Debugger gemeldet werden.Qt5.5 QString indexOf ungerade Ergebnis
if (intDelimiter == -1
&& (intOpB = strProcessed.indexOf("[")) >= 0
&& (intClB = strProcessed.indexOf("]", ++intOpB) >= 0)) {
strRef = strProcessed.mid(intOpB, intClB - intOpB);
if (pobjNode != NULL) {
strProcessed.replace(strRef, pobjNode->strGetAttr(strRef));
}
Ich habe einen Haltepunkt auf der Linie:
strRef = strProcessed.mid(intOpB, intClB - intOpB);
Im Codeausschnitt oben strProcessed enthält:
"1079-[height]"
Wenn der Haltepunkt erreicht wird, intClB enthält 1 und intOpB enthält 6 .
intOpB ist korrekt, da der zurückgegebene Wert von indexOf 5 ist und dann inkremiert wird Eingegeben vor der Suche nach "]", aber intClB ist nicht korrekt, warum meldet der Debugger es als 1? Das ergibt für mich keinen Sinn.
Ich verwende:
Qt Creator 3.6.0
Based on Qt 5.5.1 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10), 64bit)
Built On Dec 15 2015 01:01:12
Revision: b52c2f91f5
Wie king_nak entdeckt, sollte der korrigierte Code lesen:
if (intDelimiter == -1
&& ((intOpB = strProcessed.indexOf("[")) >= 0
&& (intClB = strProcessed.indexOf("]", ++intOpB)) >= 0)) {
strRef = strProcessed.mid(intOpB, intClB - intOpB);
if (pobjNode != NULL) {
strProcessed.replace(strRef, pobjNode->strGetAttr(strRef));
}
}
Diese Werte sind nur im Debugger? Was passiert beim Drucken der Werte? –
Ja, dies sind die vom Debugger gemeldeten Werte. Ich werde jetzt versuchen, zu drucken. – SPlatten