三、字符串类应用与常用基本数据类型
我们要创建Console工程。
3.1 Qt字符串类应用
3.1.1 操作字符串
1. '+'操作符
QString提供一个二元的“+”操作符,主要用于组合两个字符串。QString传递给QString一个const char*类型的ASCII字符串,它被解释为一个典型的以“\0”结尾的c类型字符串。
//QString
QString str1="hello ";
str1=str1+"world";
qDebug()<<str1;
qDebug()<<qPrintable(str1); //去除双引号
"hello world"
hello world
qPrintable()函数可以除去双引号
2. QString::append()
与+=操作符同样的功能,直接在一个字符串末尾添加另一个字符串。
//QString::append()
QString str2="ni";
QString str3="hao";
str2.append(str3);
qDebug()<<qPrintable(str2);
str2.append("ya!");
qDebug()<<qPrintable(str2);
nihao
nihaoya!
3. QString::sprintf()
组合字符串。
//QString::sprintf()
QString str4;
str4.sprintf("%s","hello");
qDebug()<<qPrintable(str4);
str4.sprintf("%s %s","hello","world");
qDebug()<<qPrintable(str4);
hello
hello world
4. QString::arg()
组合方式字符串。该函数重载可以处理多种数据类型。因为它类型安全,同时支持Unicode,可以改变%n参数顺序。
//QString::arg()
QString str5;
str5=QString("%1 love %2").arg("I").arg("you");
qDebug()<<qPrintable(str5);
I love you
3.1.2 查询字符串
1. QString::startsWith()
判断一个字符串是否以某个字符串开头。Qt::CaseInsensitive 代表大小写不敏感;Qt::CaseSensitive表示大小写敏感。
判断结尾开头函数QString::endsWith()。
//QString::startsWith(),QString::endsWith()
QString str6="how are you";
qDebug()<<str6.startsWith("how",Qt::CaseSensitive); //大小写不敏感
qDebug()<<str6.endsWith("You",Qt::CaseInsensitive); //大小写敏感
true
true
2. QString::contains()
判断一个指定的字符串是否出现过。
//QString::contains()
QString str7="How are you";
qDebug()<<str7.contains("How",Qt::CaseSensitive);
true
3. QString::toInt()
将字符串转换成整型。
//QString::toInt(),toDouble(),toFloat(),toLong()
//注意不是转为ASCII码,是直接转换,字符串10就转为10,
QString str8="10";
bool ok;
int sun=str8.toInt(&ok,10);
qDebug()<<ok<<' '<<sun;
true 10
注意:不是转为ASCII码,是直接转换
4. QString::compare()
对比两个字符串。
//QString::compare()
int a1=QString::compare("abcd","ABCD",Qt::CaseInsensitive);
int a2=QString::compare("abcd","ABCD",Qt::CaseSensitive);
int a3=QString::compare("ABCD","abcd",Qt::CaseSensitive);
qDebug()<<a1<<' '<<a2<<' '<<a3;
0 32 -32
两个字符串相等返回0,如果前面的字符串顺序在后面的字符串之前,则返回负值,为第一个ASCII码相减,如果前面的字符串顺序在后面的字符串之后,则返回正值,为第一个ASCII码相减。
5. 转换ASCII码
//将QString转换成ASCII码
QString str9="abcd";
QByteArray by=str9.toUtf8();
for(int i=0;i<str9.size();i++)
qDebug()<<int(by.at(i));
97
98
99
100
6. QDateTime和QByteArray
//QDateTime QByteArray
#include<QDateTime>
#include<QByteArray>
QDateTime dt;
QString str10=dt.currentDateTime().toString("yyyy.MM.dd hh.mm.ss");
qDebug()<<str10;
QByteArray str11="ABcd";
qDebug()<<str11.toLower(); //转小写
qDebug()<<str11.toUpper(); //转大写
"2023.10.08 22.22.55"
"abcd"
"ABCD"
currentDateTime()检测系统实时时间。
注意:使用是要引入头文件