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使用相关推荐

  1. Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题

    代码如下:如果不不设全局的字符集是utf-8,那么网上一般的方法是可以转的.如下程序中 #define DD 1的情况下:但是如果设置了全局的utf-8,再用以前的方法: QByteArray ba= ...

  2. Qt QString 与 const char* 类型的转换

    Qt QString 与 const char* 类型的转换QString DATA; std::string str = DATA.toStdString(); const char* ch = s ...

  3. QT QString含中文字符串转16位Unicode字符串

    QT QString含中文字符串转16位Unicode字符串 近期做串口编程时遇到了个问题,折腾了好大会,终于弄明白了,特此分享! //目标:新浪微博->0465b06d6a5fae535a Q ...

  4. Qt QString 与char* 相互转换

    Qt下,字符串都是使用QString,但是很多时候我们需要的char* 这样的参数. 下面介绍两种转换的方法: 1.QString转为QByteArray然后再转为char* QString Qstr ...

  5. Qt QString().sprintf(“%x“)解决打印无符号十六位数

    场景: 最近使用海康工业相机的SDK进行二次开发,打印出来的函数返回错误码总是怪怪的,和开发手册里的对不上号,其实就是无符号十六位被Qt默认转成了int型,然后传到QString 代码: 在MFC的D ...

  6. Qt QString 增、删、改、查、格式化等常用方法总结

    目录 一.QString 格式化 之 arg(): 二.字符串拼接操作 三.字符串部分删除 四.字符串替换 五.字符串查找 六.其他,一些常用的方法 一.QString 格式化 之 arg(): 1. ...

  7. Qt QString类及常用函数功能详解

    QString 是 Qt 编程中常用的类,除了用作数字量的输入输出之外,QString 还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能. QString 存储字符串釆用的是 Un ...

  8. Qt QString详解

    1.QString 常用方法 //append 在后面添加字符串,prepend在前面添加字符串QString s1 = "张";QString s2 = "三" ...

  9. QT QString转16进制

    QString temHex_len="1234"; QString temHex_crc="6677"; qDebug("temHex_crc = ...

最新文章

  1. HTML5 canvas 在线画笔绘图工具(三)
  2. python大作业思路_python大作业
  3. ECCV 2018 | 腾讯AI Lab提出视频再定位任务,准确定位相关视频内容
  4. SpringBoot 对象输出
  5. Linux中10个有用的命令行补齐命令
  6. OpenGL基础30:模板测试
  7. linux 清空history以及记录原理
  8. shell中引号的应用
  9. java添加录音,大家说说java程序里怎么插入视频和音频啊
  10. 解决libxml2不支持中文的问题
  11. 如何解决样本不均衡问题
  12. 突破淘宝对于selenium检测
  13. 嵌入式uml绘图工具_新的可嵌入制图工件
  14. 利用Udacity模拟器实现自己的自动驾驶小车
  15. httpwatch使用
  16. 职等你来 | UE/UX交互设计师(15k);时钟AE工程师;数字IC验证工程师(薪资开放)
  17. 三菱q系列plc连接电脑步骤_三菱Q系列PLC以太网通信设置方法
  18. 使用dd命令在Linux下创建大文件,批量大小文件生成方法
  19. 天嵌科技恭祝大家元宵节快乐
  20. linux创建ps格式文件怎么打开,ps文件扩展名,ps文件怎么打开?

热门文章

  1. android 线程互斥锁,线程锁(互斥锁Mutex)及递归锁
  2. java多线程互斥锁_浅谈Java多线程互斥锁
  3. 重学数据结构与算法系列:链表及其应用
  4. netcore vue elementui自动代码生成器
  5. 简述计算机在液体成型中的应用,计算机技术在3D打印材料成型过程中的应用
  6. 华为:配置交换机console口验证
  7. gitlab-runner certificate signed by unknown authority
  8. 简要聊聊UNIX,MINIX,LINUX,BSD的区别与特质
  9. NR HARQ (四)dynamic codebook
  10. Android开发真等于废人?再不刷题就晚了!