QString的arg()多参数疑问:仅%1为何传多个参数?
关于QString::arg多参数传入的疑问解答
先看你贴的代码:
QString("%1").arg(2176782335, 6, 36, QChar('0')).toLatin1()
你疑惑为啥一个%1占位符却传了多个参数?其实这是Qt的arg()方法的重载版本,不是给多个占位符传值的那种。
这个重载是专门用来对单个数值做格式化的,四个参数的作用分别是:
2176782335:要转换的原始数值6:要求格式化后的字符串最小长度为6位,长度不够时用填充字符补全36:转换时使用36进制(0-9加上a-z共36个字符)QChar('0'):当数值长度不足6位时,在前面补0
举个实际效果的例子:把2176782335转成36进制本身是1z9h6t,长度是5位,所以会在前面补一个0,最终得到01z9h6t。
而你以为的“一个占位符对应一个参数”,是arg()的另一种重载——比如QString("%1-%2").arg(10).arg(20),这种是依次给多个占位符传值的版本,和你遇到的这个完全是两回事。
内容的提问来源于stack exchange,提问作者bopeh74638
相关产品推荐
相关产品推荐

