我写的一段程序有用到.at()函数,部分程序如下:
- C/C++ code
QString buff1;for(int j=0;j<buff1.size();j++) { if(buff1.at(j)=='!') { m=j; break; } }
调试模式下,出现以下问题:
ASSERT: "i >= 0 && i < size()" in file /usr/include/qt4/QtCore/qstring.h, line 702
程序异常终止。
请问这是为何?
------解决方案--------------------
他的程序不是这里出的问题。打断点单步调试下,等你找到问题出在哪里的时候,估计你问题也解决了。
------解决方案--------------------
那个 assert : i >= 0 && i < size()应该是QString类里面的,是 QString::at()的时候调用的。但是他这个是QString确实是空的,应该是不会进入循环才对,单步调试看看。
------解决方案--------------------
QString buff1;
for(int j=0;j<buff1.count();j++)
{
if(buff1.at(j)=='!')
{ m=j;
break;
}
}
用count来表示 QString 里 QChar 的个数 size是指buf的大小
------解决方案--------------------
你先在程序每个地方打印一下,比如 qDebug() << "1"; qDebug() << "2";大概确认位置之后在对那个位置进行调试。