本文主要是介绍QT之QString.arg输出固定位数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述
我需要用QString输出一个固定位数的数字字符串。起初我的代码是这样:
int img_num = 1
auto new_name = QString("%1.png").arg((int)img_num, 3, 10, '0'); //最后一个参数用u'0'也是一样的
qDebug() << "new_name:" << new_name;
但是输出却是:
new_name: "1.000000000000000000000000000000000000000000000000.png"
最终有效的代码:
auto new_name = QString("%1.png").arg((int)img_num, 3, 10, QLatin1Char('0')); //修改的是最后一个参数
或者
auto new_name = QString("%1.png").arg((int)img_num, 3, 10, QChar('0')); //修改的是最后一个参数
输出效果
new_name: "001.png"
原因分析
QString.arg的原型函数是:
QString QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = u' ') const
最后一个参数是QChar,这是一个16位的字符类型,并不是c++中的char。所以需要转换一下。
参考资料
QString格式化的几种用法:补零/进制转换/保留小数位等
这篇关于QT之QString.arg输出固定位数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!