Qt报错 QString::arg: Argument missing(转)

转自https://www.jianshu.com/p/4b884a997009

 

以下代码出现错误QString::arg: Argument missing

QString sxy=QString("(x=%1y=%2)").arg(pt.x).arg(pt.y);
sNum = sNum + sxy.toStdString() + "(" + sName + ")";
sMacPos=QString("%1,%1").arg(pt.x).arg(pt.y).toStdString();//20191130

 

 

工作中我们一般会大量使用到QString的arg来进行字符串的拼接,因为使用起来确实比较直观方便,但是当你链式使用arg时(即 .arg(xxx).arg(xxx).arg(xxx)....这样的形式),一定要小心,要确保arg的参数内容没有形如%<1-99>这样的内容。

因为一旦有这样的内容,后续arg就会把这些内容进行错误的替换(除非这是你想要的效果)。
很多时候,像url、路径、文件名这些都会可能出现这样形式的内容,尤其是url,进行了urlencode的链接就很可能有这种。

为了避免出现这种不必要的错误,虽然我们可以选择用QTextStrem或QString::asprintf来替代arg进行字符串拼接的工作,但是这两种方式都没有arg那么好用。
既然要用arg的话,那么我们就尽量避免链式调用arg,转而使用arg的多参数重载方法,重载版本有可以支持从1个QString直到9个QString的参数。
使用这种多参数的版本,我们所有的参数都会一次给到arg进行拼接,就不会出现链式调用的那种问题了。

如果拼接的参数多于9个呢,这时候可以变通一点,拆分成两个arg的链式调用,第一个arg的调用参数要确保为不会出现%<1-99>这样的内容,后一个就不受限制了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值