Qt QString的使用实现

QString则使用隐式共享,又称回写复制。当两个对象共享同一份数据时,数据内容不改变,则不进行数据的复制,即将深拷贝和浅拷贝结合起来使用。

QString使用时在连续的内存块上保存字符串,QString内存分配策略如下:

  • 范围0~20:每次4个字符。
  • 范围20~4084:每次2倍。
  • 范围4084~∞:每次2048个字符。

+:连接字符串

QString str1 = "I ";
QString str2 = "LOVE ";
QString str3 = "YOU";
QString str4 = str1 + str2 + str3; //I LOVE YOU

append():追加字符串

QString str1 = "Hello ";
QString str2 = "World";
str1.append(str2);//Hello World
str1.append("!");//Hello World !

sprintf():赋值/连接/追加字符串

QString str;
str.sprintf("%s","Nice to ");//str = Nice to
str.sprintf("%s %s","Nice to ", "meet you");//str = Nice to meet you

arg():同上

QString str;
str = QString("My name is %1, I'm %2 old.").arg("Paul").arg("17").
//str = My name is Paul, I'm 17 old.

insert():特定位置插入字符串

QString str = "This is test code.";
str.insert(8,"not ");
//str = This is not test code.

prepend():开头插入字符串

QString str = "This is test code.";
str.prepend("Oh! ");
//str = Oh! This is test code.

replace():替换原字符串某些字符

QString str = "This is test code.";
str.replace(13,5,"data.");
//str = This is test data.

trimmed():移除字符串两端的空白字符

QString str = "   This is test code.   ";
QString str1 = str.trimmed();
//str = This is test code.

simplified():移除两端空白字符,使用单个空格字符“ ”替代

QString str = "   This is test code.   ";
QString str1 = str.simplified();
//str = " This is test code. "

startsWith():检查字符串是否以某个字符串开头,Qt::CaseSensitive指定

QString str = "This is test code.";
bool result = str.startsWith("This",Qt::CaseSensitive);
//result = true
QString str = "This is test code.";
bool result = str.startsWith("is",Qt::CaseSensitive);
//result = false

endsWith():功能同上,检查结尾。

QString str = "This is test code.";
bool result = str.endsWith("code.",Qt::CaseSensitive);
//result = true
QString str = "This is test code.";
bool result = str.endsWith("is",Qt::CaseSensitive);
//result = false

contains():判断一个字符串是否出现过。

QString str = "This is test code.";
bool result = str.contains("code.",Qt::CaseSensitive);
//result = true
QString str = "This is test code.";
bool result = str.contains("what",Qt::CaseSensitive);
//result = false

localeAwareCompare(const QString&, const QString&):比较两个字符串,前小于后返回负值,相等返回0,大于返回正值。此比较时基于平台相关的本地字符集。

qDebug()<<"Result:"<<QString::localeAwareCompare("good","bad");
//Result: 1

compare((const QString&, const QString&,Qt::CaseSensitivity):指定是否进行大小写比较,用法同上。

<:比较是否小于,是则返回true。

<=:比较是否小于等于,是则返回true。

==:比较是否相等,是则返回true。

>=:比较是否大于等于,是则返回true。

>:比较是否大于,是则返回true。

......

toInt():转整型。

toDouble():转双精度浮点型。

toFloat():转浮点型。

toLong():转长整型。

toLongLong():转64位长整型。

......

QByteArray():QString会返回一个const char *的QByteArray,既可以存储原始字节,也可以存储以“\0”结尾的8位字符串。

QString str = "I'm good man";
QByteArray ba = str.toAscii();
ba.append("yes,very good");

toAscii():返回一个ASCII编码的8位字符串。

toLatin1():返回一个Latin-1(ISO8859-1)编码的8位字符串。

toUtf8():返回一个UTF-8编码的8位字符串,UTF-8是ASCII码的超集,它支持整个Unicode字符集。

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

isEmpty():检查是否空字符串。

isNull():检查是否为空。

QString().isNull; //true
Qstring().isEmpty(); //true
QString("").isNull; //false
QString("").isEmpty(); //true

到此这篇关于Qt QString的使用实现的文章就介绍到这了,更多相关Qt QString内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Qt基础开发之QString与QByteArray详细用法与区别及QString QByteArray互转

    QString Qt的QString类提供了很方便的对字符串操作的接口,QString没有继承任何Qt基类. QString::arg()用法 QString str = QString("%1 %2 %3").arg(1).arg(2.0).arg("hello"); ​ %1, %2, %3作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成1,%2将被替换成2.0,%3将被替换成"hello".输出为:"1 2

  • Qt QString的使用实现

    QString则使用隐式共享,又称回写复制.当两个对象共享同一份数据时,数据内容不改变,则不进行数据的复制,即将深拷贝和浅拷贝结合起来使用. QString使用时在连续的内存块上保存字符串,QString内存分配策略如下: 范围0~20:每次4个字符. 范围20~4084:每次2倍. 范围4084~∞:每次2048个字符. +:连接字符串 QString str1 = "I "; QString str2 = "LOVE "; QString str3 = &quo

  • Qt开发之QString类的使用教程详解

    目录 介绍 QString常用函数 常用四则运算符 介绍 采用Unicode编码 采用隐式共享技术,节省内存和不必要的数据拷贝 隐式共享介于浅拷贝和深拷贝之间,当两个string对象赋值时,会实现浅拷贝(共享一块内存),如果某个对象被修改了,则会实现深拷贝(从新开辟内存) 跨平台使用,不需要考虑不同平台的兼容性 QString直接支持字符串与数字的相互转换 QString直接支持字符串大小比较 QString直接支持不同字符编码间的相互转换 QString直接支持std::string和std:

  • Qt中QStringList与QString的常用方法总结

    目录 QString 转 QByteArray QByteArray 转 QString QStringList 转 QString QStringList 其他常用方法 QString 其他常用方法 本文汇集了QString 与 (QStringList | QByteArray)之间的转换,以及QString.QStringList的一些常用方法. QString 转 QByteArray //method<1> QString src1("hello kandy");

  • qt实现倒计时示例

    用Qt写的倒计时程序,可根据指定时间作不同用途.创建Qt的简单GUI工程,修改main.cpp即可. 复制代码 代码如下: #include <QApplication>#include <QLabel>#include <QDate>#include <QLayout>int main(int argc, char *argv[]){    QApplication a(argc, argv);    QLabel *label = new QLabel;

  • QT网络编程UDP下C/S架构广播通信(实例讲解)

    QT有封装好的UDP协议的类,QUdpSocket,里面有我们想要的函数接口.感兴趣的话,可以看看. 先搞服务端吧,写一个子类,继承QDialog类,起名为UdpServer类.头文件要引用我们上边说的QUdpSocket这个类,还有我们想要的布局的类. #ifndef UDPSERVER_H #define UDPSERVER_H #include <QDialog> #include <QLabel> #include <QLineEdit> #include &l

  • C++ Qt属性系统详细介绍

    C++ Qt属性系统详细介绍 Qt提供了一个绝妙的属性系统.跟那些由编译器提供的属性差不多.然而,作为一个独立于编译器和平台的库,Qt不依赖于非标准的编译特性,比如__property 或[property].Qt可以在任何平台上的标准编译器下编译.Qt属性系统基于元数据对象系统--就是那个提供了对象内置信号和槽通讯机制的家伙. 声明属性需要什么 要声明一个属性,需在继承自QObject的类中使用Q_PROPERTY()宏. Q_PROPERTY(type name READ getFuncti

  • Qt实现FTP的上传和下载的实例代码

    为了方便网络编程,Qt 提供了 Network 模块.该模块包含了许多类,本文介绍了Qt实现FTP的上传和下载,分享给大家 本来想简单抄抄书,随便手写个Ftp客户端的,结果发现教材上的是基于Qt4的QFtp类库,而在Qt5中取消了这一个类库(同时也取消了QHttp等的类),取而代之的是QNetworkAccessManager 这个类,把这些杂货全都揽下来了,据说是因为之前的两个类有重复而且效率有问题balabala.于是就百度了一下,发现百度上要么讲的不全,要么就是要去下一个由热心网民重新封装

  • QT网络编程Tcp下C/S架构的即时通信实例

    先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include <QDialog> #include <QListWidget> #include <QLineEdit> #include <QPushButton> #include <QLabel> #include <QGridLayout> #include <QtNetWo

  • Qt定时器和随机数详解

    环境是:Windows 7 + Qt 4.8.1 +Qt Creator 2.4.1 一.定时器 Qt中有两种方法来使用定时器,一种是定时器事件,另一种是使用信号和槽.一般使用了多个定时器时最好使用定时器事件来处理. 1.新建Qt Gui应用,项目名称为myTimer,基类选择QWidget,类名为Widget. 2.到widget.h文件中添加函数声明: protected:     void timerEvent(QTimerEvent *); 然后添加私有变量定义: int id1, id

随机推荐