如何用空格填充 QString?

Posted

技术标签:

【中文标题】如何用空格填充 QString?【英文标题】:How do I pad a QString with spaces? 【发布时间】:2011-11-09 17:57:39 【问题描述】:

如何在 QString 的末尾填充空格?

例如,我希望 QString 总共有 4 个字符,并且它只有 1 个字符长。我希望最后 3 个是空格。

【问题讨论】:

QString foo( "1" ); foo += QString( 3, ' ' ); 作为一个更一般的答案(而不是仅仅说 RTFM),如果您查看 Qt documentation 下的 QString class reference 并在文本“pad”上进行搜索找到function below。 【参考方案1】:

奇怪的是,有一个专门用于 QString::leftJustified 的函数

http://doc.qt.io/qt-4.8/qstring.html#leftJustified

所以paddedString = originalString.leftJustified(4, ' '); 可以解决问题。

(请注意,如果字符串长度超过您的字符限制,您还可以通过传入第三个参数true 来截断字符串。)

【讨论】:

【参考方案2】:

您还可以使用带有字段宽度参数的QString::arg() 重载。字段宽度值是所需字符的总数,而不是填充大小。您需要为左填充使用负字段宽度值,为右填充使用正值

QString QString::arg(const QString & a, 
        int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ))

例如,在printf 样式格式中最有用。

QString("%1: %2 - %3").arg("a", -4).arg(2).arg(10);

"a :2 - 10"

【讨论】:

以上是关于如何用空格填充 QString?的主要内容,如果未能解决你的问题,请参考以下文章

Qt532.QString_填充字符

QT中关于QString用法

QT QString

QString::QString 中文乱码

QString::arg()的参数中的“%1”如何处理?

Qt中 QString 和int, char等的“相互”转换