QString::arg: Argument missing 可能的bug

      目的:昨天在实现一种规则时,需要将一个1000内的任意整数转换为3位的字符串,高位补0,还需要将一个60以内的任意整数转换为2位的字符串,也是高位补0。我用的环境是windows下QT-MSVC5.8.0的32位版本。

      方法及结果:我头脑蹦出来的第一个想法是采用QString的占位符及带长度的arg函数,如下所示

               QString QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ' ' )) const。

      想到这个方法的原因是我之前实现某个协议时大量采用这种方式进行了特定位数的16进制或2进制的转换,运行得很好。

      但在这里运行不正常。

       例如,当我想输出一个6时,我的代码如下

       QString("1%").arg(6,2,10,QLatin1Char('0'));

               执行结果如下

                QString::arg: Argument missing: "1%" , 6。

     这里有个很奇怪的现象,系统提示出现的问题中出现了我想要输出的数,但是占位符替换失效!!!

    还有个现象:我是先生成3位数的字符串,再生成2位数的字符串,当我把3位数的字符串用其他的方式生成时,这样生成2位数又可以了。好玩吧。

    我把这段可执行程序拷到其他机器上执行,也是一样的问题。

     最终办法:判断数与10或100的大小,手动补0。

     在网上没搜到相近问题,mark一下。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值