008 关于QString的那点事?

本文介绍了Qt中字符串的各种操作方法,包括字符串的组合、查询、转换及与QbyteArray之间的转换。通过实例展示了如何进行字符串拼接、判断字符串是否包含特定内容、字符串到整数的转换等常见操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a)        组合字符串

QString str1 = "Welcome";

str1 = str1 + " to you!";

 

QString str2 = "Hello";

str2 += " World!";

 

str2.append(str1);

 

QString str3;

str3.sprintf("%s","Welcome");

str3.sprintf("%s","to you! ");

str3.sprintf("%s%s","welcome ","to you!");

 

QString str4;

str4 = QString("%1 was bornin %2. %3").arg("John").arg(1982).arg("Nice to meetyou");

 

         //移除字符串两边的空白字符

         QStringstr5 = "      Welcome \t to \nyou!      ";

str5 = str5.trimmed();

//移除字符串两边的空白字符,使用单个空格字符代替字符串中出现的空白字符

str5=str5.simplified();

b)        查询字符串数据

//判断一个字符串是否以某个字符串开头

QString str6 = "Welcome to you!";

if(true == str6.startsWith("Welcome",Qt::CaseSensitive))

qDebug()<<"true"<<endl;

         //判断一个字符串是否以某个字符串结尾

   if(true == str6.endsWith('!'))

       qDebug()<<"true"<<endl;

         //判断一个指定的字符串是否出现过

         if(true== str6.contains("Welcome"))

       qDebug()<<"true"<<endl;

c)        字符串转换

//QString::toInt()将字符串转换为整形数值,类似的函数还有toDouble()/toFloat()/toLong()/toLongLong()等

QString str7 = "123";

bool ok;

int hex = str7.toInt(&ok,16);//转换成功则ok=true, hex=293

int dec = str7.toInt(&ok,10);//转换成功则ok=true, dec=125

d)        与QbyteArray的转换

QString str8 = " Welcome toyou! ";

QByteArray ba =str8.toLocal8Bit();//返回一个ASCII编码的8位字符串

qDebug()<<ba;

ba = str8.toLatin1();//返回一个UTF-8编码的8位字符串(UTF-8是ASCII码的超集,它支持整个Unicode字符集)

qDebug()<<ba;

ba.append("Hello,World!");

qDebug()<<ba.data();

toLacal8Bit()返回一个系统本地编码的8位字符串

### 判断 QHostAddress 和 QString 是否相等的方法 在 Qt 中,`QHostAddress` 是一个专门用于表示 IP 地址的类,而 `QString` 是一个字符串类。要判断一个 `QHostAddress` 是否与一个 `QString` 相等,需要将 `QString` 转换为 `QHostAddress` 类型,然后进行比较[^1]。 以下是实现此功能的代码示例: ```cpp #include <QHostAddress> #include <QString> #include <QDebug> bool areEqual(const QHostAddress& hostAddress, const QString& string) { QHostAddress addressFromString(string); // 将 QString 转换为 QHostAddress return hostAddress == addressFromString; // 比较两个 QHostAddress 是否相等 } int main() { QHostAddress host("192.168.1.1"); QString str("192.168.1.1"); if (areEqual(host, str)) { qDebug() << "The QHostAddress and QString are equal."; } else { qDebug() << "The QHostAddress and QString are not equal."; } return 0; } ``` 上述代码中,`QHostAddress` 的构造函数可以接受一个 `QString` 参数,并尝试将其解析为有效的 IP 地址。如果解析成功,则可以通过 `==` 运算符直接比较两个 `QHostAddress` 对象是否相等[^2]。 需要注意的是,如果 `QString` 表示的内容不是一个有效的 IP 地址(例如 `"invalid"`),那么转换生成的 `QHostAddress` 将是一个无效地址(`QHostAddress::Null`)。在这种情况下,比较结果始终为不相等。 #### 注意项 - 如果需要处理 IPv6 地址,确保输入的 `QString` 格式正确,否则可能会导致解析失败[^3]。 - 在实际应用中,建议对输入的 `QString` 进行有效性检查,以避免潜在的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值