QString替换元素

时间:2019-01-23 06:24:52

标签: c++ qt5 qstring

我尝试替换QString img=":/images/f0000.png";

这是我的代码

if(pValue>=50 && pValue<=89)
    {
        QString img=":/images/f0000.png";
        QString img=":/images/f0000.png";
        //qDebug()<<img<<endl;
    if(pValue>=50 && pValue<=59)
    {
        img.data()[12]='0';
        img.data()[13]=char('0'+pValue-50);
    }//end if
    else if(pValue>=60 && pValue<=89)
    {
        img.data()[12]=char('0'+((pValue-50)/10));
        img.data()[13]=char('0'+((pValue-50)%10));
    }//end else if
    qDebug()<<img<<endl;
    }//end if

如果pVaule为51,则img应该为":/images/f0001.png"

如果pVaule为71,则img应该为":/images/f0021.png"

但是我的结果是 pVaule是51 img

":/images/f000\u0001.png"

pVaule是71 img

":/images/f00\u0002\u0001.png"

如何解决?

1 个答案:

答案 0 :(得分:2)

您必须使用数字的ASCII值...

if(pValue>=50 && pValue<=89)
{
    QString img=":/images/f0000.png";
    if(pValue>=50 && pValue<=59)
    {
        img.data()[12]='0';
        img.data()[13]='0'+char(pValue-50);
    }
    else if(pValue>=60 && pValue<=89)
    {
        img.data()[12]='0'+char(pValue-50)/10;
        img.data()[13]='0'+char(pValue-50)%10;
    }
}

此外,对此的更好解决方案是:

img.replace(10, 4, QString(4 - QString::number(50 + pValue).length()), '0') + QString::number(50 + pValue));