QString::arg()函数用法(数字前补零)

        QString中的arg方法类似于 (1)“C中的printf中使用的格式输出符”和 (2)“C++中string的append方法”的结合体。

常用的两种格式如下:

1. 用于填充字符串中的%1,%2…为给定的参数

//原型:
QString QString::arg(const QString & a1)

(1) arg(str1, str2, str3 ...)形式

QString str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").
            arg("1","2","3","4","5","6","7","8","9")
//str将只会输出:"1 2 3 4 5 6 7 8 9 %10 %11"

注意1arg( )里的参数实现从1个到9个,也就是说最多只能有9个!

解决方法为在后面再加一个arg方法,放上后面两个对应的参数:形式(2)

(2)arg(str1).arg(str2).arg(str3)

QString str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").
            arg("1","2","3","4","w","6","7","8","9").arg("a","b");
//输出为:"1 2 3 4 5 6 7 8 9 a b"

QString str=QString("%1 %2 %3 %4").arg("A").arg("B").arg("C").arg("D");
//str=="A B C D"

两者形式的区别:

str = QString("%1 %2").arg("%1World", "Hello");

qDebug()<<str;

//输出为:"%1World Hello"

str = QString("%1 %2").arg("%1World").arg("Hello");

qDebug()<<str;

//输出为:"HelloWorld %2"

//第一个arg执行完后变为:QString("%1World %2").arg("Hello")

//再次执行后"Hello"替换的为%1

注意2所以在使用多个arg( )连接时,一定要注意,前面连接使用的arg( )里如果有==“%+数字”==的情况,后面的arg( )会同样替换!

2. 用于填充字符串中的%1,%2…为给定格式的整形数字

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

//参数:a:表示要处理的数字;fieldWidth:字宽(输出多少位);base:数字基数(八进制/十进制/十六进制);fillChar :要达到字宽fieldWidth,所填充的字符。

注意3原型中的a的类型还可以是uint、long、double、udouble等数字的类型

应用:数字前补零

int a = 800;
auto b = QString("%1").arg(a, 6, 10, QLatin1Char('0'));
auto c = QString("%1").arg(a, 6, 16, QLatin1Char('0'));
qDebug() << b;
qDebug() << c;
//输出:
//b: “000800”
//c: “000320”

QString text = QString("%1:%2")  
               .arg(123, 5, 10, QChar('0'))  
               .arg(456, 5, 10, QChar('0'));
//结果:text = “00123:00456”

应用拓展:在小数后补字符 / 控制小数点后精确值位数

//QString::number是将数字(整数、浮点数、有符号、无符号等)转换为QString类型。
//number方法也有很多重构函数,此处介绍的是:
static QString number(double, char f='g', int prec=6);

//第一个参数:待转换数字;第二个参数(浮点数):浮点数格式;第三个参数(浮点数):保留小数位数。

QString::number(100.1, 'f', 3); //100.100
QString::number(100.101111, 'f', 3); //100.101
  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值