Qt:在 QString 中格式化整数
Posted
技术标签:
【中文标题】Qt:在 QString 中格式化整数【英文标题】:Qt: format an integer in a QString 【发布时间】:2014-02-25 14:47:02 【问题描述】:我想在QString
中格式化一个整数。我想总是有 6 个数字。
例如“1”应该是“000001”,“12”应该是“000012”。
我尝试与printf(%06d, number)
做类似的事情。所以我写了这个
QString test;
test = QString("%06d").arg(QString::number(i));
qDebug()<<test;
i 在循环for
中实现。
但它不起作用,因为我有:
“0d” “1d” “二维” “3d”...
请问有人知道怎么做吗?
【问题讨论】:
如果你阅读了 QString::arg() 的文档,你就会明白你得到的结果 【参考方案1】:String 的参数支持不像 printf 那样工作。这一切都记录在案。你想要的是:
QString test = QString("%1").arg(i, 6, 10, QLatin1Char('0'));
【讨论】:
【参考方案2】:您可以尝试以下方法:
int a = 12;
QString test = QString("%1").arg(a, 6, 'g', -1, '0');
qDebug() << test; // outputs "000012"
【讨论】:
这不必要地将arg
重载用于双打。如果平台 int
是 64 位类型,或者声明曾经更改为 qint64
,它将非常失败。我所说的严重失败是指结果中的数字是完全错误的。如果平台的 double
类型等于 float
并且恰好是 32 位宽(标准允许),它将同样失败。所以这几乎是不可移植的,根本不推荐。【参考方案3】:
查看QTextStream 的文档。有许多格式化设置以及许多方便的操纵器。这类似于来自 STL iostream
的文本操纵器
【讨论】:
以上是关于Qt:在 QString 中格式化整数的主要内容,如果未能解决你的问题,请参考以下文章