Я использую Qt Creator для разработки приложения C++ и отладчика для изучения кода, я пытаюсь понять некоторые очень странные результаты, сообщаемые отладчиком.Qt5.5 QString indexOf нечетный результат
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));
}
У меня есть точки останова на линии:
strRef = strProcessed.mid(intOpB, intClB - intOpB);
В фрагменте кода выше strProcessed содержит:
"1079-[height]"
Когда точка останова, intClB содержит 1 и intOpB содержит 6
intOpB является правильным, потому что возвращаемое значение из indexOf равно 5, тогда его increm перед поиском «]», но intClB неверен, почему отладчик сообщает об этом как 1? Для меня это не имеет смысла.
Я использую:
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
Как разыскан king_nak, исправленный код следует читать:
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));
}
}
Являются ли эти значения только в отладчике? Что происходит, когда вы печатаете значения? –
Да, это значения, сообщенные отладчиком, сейчас я попробую выполнить печать. – SPlatten