一.基础用法
1.创建QString对象
QString str1 = "Hello, World!";
QString str2("This is a QString object.");
//一个是等号的重载,一个是拷贝构造,本质上是等价的
2.获取字符串长度
int length = str1.length(); // 返回字符串的长度
3.拼接字符串
QString combinedStr = str1 + " " + str2; // 使用+操作符拼接字符串
4.字符串比较
if (str1 == str2) {
// 字符串相等
} else {
// 字符串不相等
}
5.字符串查找
int index = str1.indexOf("World"); // 查找子字符串的位置
6.字符串替换
QString replacedStr = str1.replace("Hello", "Hi"); // 替换子字符串
7.字符串转换
int num = 123;
QString numStr = QString::number(num); // 将整数转换为字符串
8.字符串拆分
QStringList list = str2.split(" "); // 将字符串按空格拆分成字符串列表
foreach (const QString &str, list) {
qDebug() << str;
}
9.字符串转换为数字
QString numStr = "456";
int num = numStr.toInt(); // 将字符串转换为整数
10.字符串转换为字符数组
QByteArray byteArray = str1.toUtf8(); // 将字符串转换为UTF-8编码的字节数组
11.字符串格式化
QString formattedStr = QString("The value is %1").arg(123); // 格式化字符串
二.使用QString需要注意的点
字符串的不可变性:QString是不可变的,即一旦创建了一个QString对象,就不能直接修改其内容。任何对QString对象的修改都会返回一个新的QString对象。
字符串的编码:QString默认使用UTF-16编码存储字符串,但可以通过toUtf8()、toLatin1()等方法将字符串转换为其他编码。
字符串的拷贝:当对QString对象进行操作时,会涉及到字符串的拷贝。因为QString是不可变的,任何修改操作都会创建一个新的QString对象,而不是在原对象上直接修改。
字符串的性能:在处理大量字符串时,需要注意QString的性能。频繁的字符串拼接、替换等操作可能会导致性能问题,可以考虑使用QByteArray或QTextStream等类来处理大量字符串。
字符串的比较:在比较字符串时,需要注意区分大小写或忽略大小写。可以使用QString的compare()方法来进行比较,并指定比较规则。
字符串的空值检查:在使用QString时,需要注意对空值进行检查,以避免空指针异常。可以使用isEmpty()方法来判断字符串是否为空。
字符串的转换:在将QString转换为其他类型时,需要注意转换的准确性。比如将QString转换为整数时,需要确保字符串中只包含数字字符。
字符串的拆分:在拆分字符串时,需要考虑分隔符的处理。可以使用split()方法来按照指定的分隔符拆分字符串,并注意处理可能存在的空字符串。
三.案例练习
需求:在文本框中输入一段古诗词,可以自动提取每段的第一个字符,并输入到另一个文本框中。
如图所示:
代码如下:
//先检测是否有文本
if(ui->text_name->toPlainText().isEmpty())
{
QMessageBox::information(this,"提示","文本为空,请输入!");
}else
{
//需求:将text里面的文本进行分割,并其每个字串的第一个字符组成一段话
QString ret;
QString ans=ui->text_name->toPlainText();
//进行分割
QStringList list=ans.split("\n");
int count=list.count();
for(int i=0;i<count;i++)
{
ret+=list[i].at(0);
}
//将ret输入回到lineEdit中
ui->lineEdit->setText(ret);
}