QString 怎么格式化字符串
时间: 2023-08-08 12:12:50 浏览: 562
在 Qt 中,可以使用 QString::arg() 函数来格式化字符串。该函数接受一个或多个参数,并将其插入到字符串中的占位符中。
示例代码:
```
QString name = "Alice";
int age = 30;
QString message = QString("My name is %1 and I am %2 years old.").arg(name).arg(age);
```
在上面的代码中,%1 和 %2 是占位符,arg() 函数会按照顺序将 name 和 age 插入到占位符中,生成最终的字符串 message。
还可以使用类似 printf() 的格式字符串来格式化字符串,例如:
```
int x = 123;
QString message = QString("The value of x is %1, in hex is 0x%1").arg(x, 0, 10).arg(x, 0, 16);
```
在这个例子中,%1 出现了两次,第一个 %1 通过第二个参数 "0, 10" 指定了输出格式,表示输出一个占用至少 10 个字符宽度的整数,不足的地方用 0 填充。第二个 %1 通过第二个参数 "0, 16" 指定了输出格式,表示输出一个占用至少 16 个字符宽度的整数的十六进制表示,不足的地方用 0 填充。最终生成的字符串 message 为 "The value of x is 123, in hex is 0x0000007b"。
相关问题
QString 如何格式化字符串
在Qt中,`QString`提供了多种方法来格式化字符串。以下是几种常用的方式:
1. **`+` 运算符**:你可以将格式化字符串与其他字符串、数字或变量结合,通过`+`运算符插入变量值。例如:
```cpp
QString name = "Alice";
int age = 30;
QString message = "Hello, my name is " + name + " and I am " + QByteArray::number(age) + " years old.";
```
2. **`arg()` 和 `%` 格式化符**:如果你需要更复杂的格式,可以使用`arg()`方法配合百分号`%`作为占位符,然后传递一个列表或数组来填充这些位置:
```cpp
QString formatString = "My name is %1 and I'm %2 years old.";
message = formatString.arg(name, age);
```
3. **`QTextStream::format()` 或 `QChar::fromFormat()`**:这些函数提供了更强大的文本格式化支持,比如日期时间、浮点数等复杂格式:
```cpp
QDateTime date = QDateTime::currentDateTime();
QTextStream ts(&message);
ts.setNumberFlags(QTextStream::ShowBaseTenDigits | QTextStream::AutoDetectLocale);
ts.format("The current time is %1.", date.toString());
```
4. **` QStringLiteral()`**:如果要嵌入预编译的字符串,可以使用这个宏,防止字符串字面量被进一步格式化:
```cpp
QString pattern(QStringLiteral("Pattern: {name}, Age: {age}"));
message = pattern.arg(name, age);
```
以上是`QString`的一些基本格式化方法,它们让处理字符串变得更加灵活和可控。
QString 格式化 ,整形8 为 08字符串
可以使用QString的arg()函数来进行格式化输出,其中%表示占位符,后面的数字表示输出的宽度,0表示使用0填充,d表示整型。
例如,将整数num格式化为8位宽度的字符串,不够的用0填充,可以使用以下代码:
```cpp
int num = 1234;
QString str = QString("%1").arg(num, 8, 10, QLatin1Char('0'));
```
其中,arg()函数的第一个参数是要格式化的值,第二个参数是输出的宽度,第三个参数是进制,第四个参数是填充字符,这里使用QLatin1Char('0')表示使用字符'0'进行填充。
输出的字符串为"00001234"。
阅读全文