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 中格式化整数的主要内容,如果未能解决你的问题,请参考以下文章

qt lineedith time_t 转换格式

封装QtCore(这非Qt项目里使用QString,QJson,QFileInfo,QFile等类)

Qt QString字符串设置不同的颜色

Qt 格式转换问题 记录(好多方法)

Qt界面显示乱码问题

如何使用 Qt 5.5.1 在调试器中查看 QString 值