Qt学习01——字符串类
来源:互联网 发布:黎活明 知乎 编辑:程序博客网 时间:2024/09/21 06:35
Pr:标准C++提供的字符串有两种:
1、以”\0“结尾的字符数组;
2、字符串类string。Qt使用的字符串类QString,保存16位Unicode值,除了操作、查询、转换函数,还使用了隐式共享并优化内存分配策略。
操作字符串
一、操作符“+”、“+=”
QString str1 = "Welcome ";QString str2 = str1 + "to "; //str2 = "Welcome to "QString str2 += "Qt "; //str2 = "Welcome to Qt "
二、QString::append()
QString str3 = "world";str2.append(str3);//str3 = "Welcome to Qt world"
三、 QString::sprintf()
str.springf("%s%s",str1,"to Qt World"); //str = "Welcome to Qt world"
四、 QString::arg()
arg()相比sprintf()更好。它类型安全,完全支持Unicode,允许"%n"改变顺序。QString str1 = "Welcome ";QString str2 = "to "+"you.";QString str4 = QString(str1+" was born in "+str2).arg(str1).arg(str2);//str4 = "Welcome to you."QString str5 = QString("%1 love %2").arg("I").arg("You");//str5 = "I love You"QString str6 = QString("%2 love %1").arg("me").arg("You");//str6 = "You love me"
五、 其他方法:
1、insert(): 在原字符串指定位置插入另一个字符串;
2、prepend(): 在原字符串的开头插入另一个字符串;
3、replace(): 用指定字符串代替原字符串某些字符。
4、去除空白字符(回车符"\n"、换行符"\r"、制表符"\t"、空格符" "):
①QString::trimmed(): 移除字符串两端空白字符
②QString::simplified(): 移除字符串两端空白字符,并使用单个空格字符“ ”代替空白字符。
QString str1 = " Welcome \t to \n you! ";QString str2;QString str3;str2 = str1.trimmed();str3 = str1.simplified();ui->textBrowser->append(str1);ui->textBrowser->append(str2);ui->textBrowser->append(str3);
查询字符串
一、 QString::startsWith()
判断一个字符串是否以某个字符串开头。函数的两个参数分别指定字符串和是否大小写敏感(默认敏感)。QString str1 = "Welcome to you!";qDebug()<<str1.startsWith("welcome",Qt::CaseSensitive);//返回falseqDebug()<<str1.startsWith("welcome",Qt::CaseInsensitive);//返回true
二、 QString::endsWith()
判断一个字符串是否以某个字符串结尾。用法同String::startsWith()。三、QString::contains()
判断一个字符串是否包含某个字符串。用法同String::startsWith()。四、比较两个字符串的大小
1、运算符函数 operator <= (const QString&)
<=可替换称<、>、==等比较运算符。从第一个字符开始比较,比较的是ASCII的值。QString str1 = "Welcome to you!";QString str2 = "Wel";QString str3 = "w";qDebug()<<str1.operator <= (str2.toLatin1()); //返回falseqDebug()<<str1.operator <= (str3.toLatin1()); //返回true
2、静态函数 QString::localeAwareCompare(const QString &s1, const QString &s2)
对s1和s2进行比较,如果s1小于、等于或者大于s2,就返回小于、等于或者大于0的整数。这个比较是基于本地字符集的,并且平台相关的。通常使用这个函数可以把排好序的字符串列表呈现给用户。QString str1 = "Welcome to you!";QString str2 = "A";QString str3 = "Welcome to you!";QString str4 = "X";qDebug()<<QString::localeAwareCompare(str1,str2);//返回1qDebug()<<QString::localeAwareCompare(str1,str3);//返回0qDebug()<<QString::localeAwareCompare(str1,str4);//返回-1
3、静态函数 QString::compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
用法类似localeAwareCompare,大小写比较完全基于字符的Unicode编码,而且十分迅速。
字符串的转换
一、QString::toInt()
将字符串转换为整数。类似还有toDouble()、toFloat()、toLong()等。
QString str1 = "40"; QString str2 = "40"; QString str3 = "040"; bool ok; qDebug()<<str1.toInt(&ok,16); qDebug()<<ok; qDebug()<<str2.toInt(&ok,10); qDebug()<<ok; qDebug()<<str3.toInt(&ok,0); qDebug()<<ok;QString::toInt()有2个参数,分别返回转换状态和设置转换基数。当基数为0时使用C语言转换方法,即“0”开头基数默认为8,“0x”为16,其他均为10。
二、字符编码集转换函数
QString的字符编码集转换函数将会返回一个由构造函数QByteArray(const char*)构造的const char*类型的QByteArray对象,既可以存储原始字节,也可以存储以“\0”结尾的8位字符串。转换函数由一下几种:
1、toAscii()
返回一个ASCII编码的8位字符串。在Qt 5以上版本中已经移除这个函数,可用toLatin1()代替。
2、toLatin1()
返回一个Latin-1(ISO8869-1)编码的8位字符串。
3、toUtf8()
返回一个UTF-8编码的8位字符串。
4、toLocal8Bit()
返回一个系统本地编码(比如我用的Win10中文版,编码是GBK。如果是英文版就是UTF-8)的8位字符串。
QString str1 = "Hello World!"; QByteArray ba = str1.toLatin1(); qDebug()<<str1.toLatin1(); qDebug()<<ba; qDebug()<<ba.append("Saluton!"); qDebug()<<ba.data();
三、QString的NULL与Empty(空)字符串
①NULL字符串是使用默认构造函数或者“(const char*)0”作为参数的构造函数创建的QString字符串对象;
②Empty则是一个大小为0的字符串。
NULL字符串一定是一个空字符串,空字符串不一定是NULL字符串。
例如:
qDebug()<<QString().isNull();qDebug()<<QString().isEmpty();qDebug()<<QString("").isNull();qDebug()<<QString("").isEmpty();输出:
truetruefalsetrue
- Qt学习01——字符串类
- Qt学习——字符串类QString
- Qt学习——字符串类QString
- [Qt学习] 字符串列表类QStringList
- 【QT学习】字符串和数字
- 【QT学习】字符串和数字
- Qt学习—1
- Qt学习—qt上下文菜单显示
- Qt学习02——容器类
- Qt学习03——QVariant类
- QT——自定义字符串格式
- Qt——数组转换成字符串
- Qt字符串类QString
- Qt--字符串类
- QT学习——四则运算
- 设计模式学习(十四)————抽象工厂模式(使用Qt框架的反射技术——根据字符串动态创建类来实现)
- Qt入门-字符串类QString
- Qt-QString字符串类
- JS实现div随着鼠标移动
- VirtualBox中VboxGuestAddition的安装方法
- linux 创建内核线程
- Rx系列学习笔记_Rxjava的基本了解
- 排序算法——选择排序
- Qt学习01——字符串类
- 如何学习新技术
- Java线程 CompletionService
- java求质数,例子1-100
- ORACLE 查询高水位表 脚本
- ADO.NET学习之SqlDataAdapter,DataSet
- 特殊字符,# + %在url中传递,encode方式加密处理
- Android App异常退出时重新启动
- Core ML 与 Vision:iOS 11 机器学习教程