QString中的arg()方法
在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。
大概有以下三种替换的方法。
使用arg(str1, str2, str3)这种方法进行替换。
使用arg(str1).arg(str2).arg(str3)这种方法进行替换。
使用arg(int, int, int)这种方式进行替换。
1) 使用arg(str1, str2, str3)和arg(str1).arg(str2).arg(str3)
函数原型:
QString arg(const QString &a1, const QString &a2, const QString &a3,
const QString &a4, const QString &a5, const QString &a6,
const QString &a7, const QString &a8, const QString &a9) const Q_REQUIRED_RESULT;
最多只能有九个参数进行替换:
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"
解决方法为在后面再加一个arg方法,放上后面两个对应的参数:
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");
str输出为: “1 2 3 4 5 6 7 8 9 a b”
下面我们来看一下这两中方法的区别:
str = QString("%1 %2").arg("%1World","Hello");
输出str为:”%1World Hello” ,按顺序对应
str = QString("%1 %2").arg("%1World").arg("Hello");
输出str为:”HelloWorld %2”;
这是因为第一个arg执行完后变为:QString(“%1World %2”).arg(“Hello”),然后执行第二个。
注意以下例子:
str = QString("%1 %2").arg("%1World").arg("Hello");
//输出:"HelloWorld %2"
str = QString("%1 %2").arg("%2World").arg("Hello");
//输出:"HelloWorld Hello"
str = QString("%1 %2").arg("%3World").arg("Hello");
//输出:"%3World Hello"
str = QString("%1 %2").arg("%8World").arg("Hello");
//输出:"%8World Hello"
str = QString("%1 %6").arg("%3World").arg("Hello");
//输出:"HelloWorld %6"
str = QString("%2 %6").arg("%3World").arg("Hello");
//输出:"HelloWorld %6"
str = QString("%0 %6").arg("%3World").arg("Hello");
//输出:"HelloWorld %6"
str = QString("%-1 %6").arg("%3World").arg("Hello");
//输出:"%-1 HelloWorld"
2) 使用arg(int,int,int)
函数原型为:
QString arg(int a, int fieldWidth = 0, int base = 10,
QChar fillChar = QLatin1Char(' ')) const Q_REQUIRED_RESULT;
a:表示要处理的数字;fieldWidth:字宽;base:数字基数、
如下列:
str = QString("十进制 63 的十进制为 %1")
.arg(63,0,10);
//输出:"十进制 63 的十进制为 63"
str = QString("十进制 63 的十六进制为 %1")
.arg(63,0,16);