Qt中的字符串类

介绍

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

QString常用函数

static const QChar data[] = { 0x0055, 0x006e, 0x10e3, 0x03a3 };
QString str(data, );   //通过QChar宽字符初始化 str = "hello";     //直接赋值 str.length();    //获取字符串长度 str.size();   //获取字符串数量,等价于length() str.capacity();   //获取容量,容量包含了当前string里不必增加内存就能使用的字符数 str.isEmpty();    //如果str为空或为0 ,则返回true,否则返回false str.isNull();   //如果为0,则返回true,否则返回false str.clear();    //清空str str. resize();   //设置str的字符串长度 str.fill('m');    //将str字符串,全部字符填为'm' str.fill('m',);   //填充5个字符'm',并修改str的字符串长度为5 str.append("ABC");   //在str字符串末尾附加"ABC"子串 str.prepend("abc");    //在str字符串头部添加"abc"子串 str. chop();    //从str字符串末尾, 去掉2个字符 str = "Montreal"; str.remove(, );   //从str下标1位置开始,清除4个字符, s = "Meal" str.setNum(1234.5);    //数字转字符串 str = "1234.5" double val = str.toDouble(); //字符串转double val =1234.5 /*arg()成员函数:通过string串里通过“%数字”表示argument(参数) */
str = QString("%1,%2,%3,%4,%5,%6")
    .arg("A","B","C")
    .arg("D","E","D"); //字符串参数替换 str1 = "A,B,C,D,E,D" str = QString("%1,%2")
.arg()
.arg(,,); //将40以16进制转换为字符串,如果想使用大写的话,通过toUpper()函数来实现
//还可以这样写QString("%1").arg(cnt,,,QChar('0');  //输出00050,表示保留5位有效数字,
floatcnt2=50.12345;
  qDebug()<<QString::asprintf("%.2f",cnt2);  //打印50.12
  

str.sprintf("%d %s",,"first");    //通过一定参数输出到字符串里, str= "1 first"

str="abcdef";

str.indexOf ("bc");      //return 1

str.indexOf ("bc",);     //从str下标1的位置查找,return 1

str.indexOf ("bc",);       //没找到,则return -1

str. lastIndexOf("bc");    //反向查找,从str末尾向前查找,return 1

str. lastIndexOf("bc",);    //反向查找,从str下标5的位置向前查找,return 1

str.lastIndexOf("bc",-2);    //反向查找,从str末尾-1的位置向前查找
str.insert( , "AB ");     //在str字符串下标2的位置插入"AB "子串 str="abcdefgh"; str2 = str.mid();   //提取子串,提取出str的下标为3到末尾,给str2 str2 = str.mid(,); //从str的下标为3开始,提取4个字符给str2 str = "th!ea minimum";
str.indexOf(QRegExp("[m i!]"), ); // 使用正则表达式匹配查找,遇到m, ,i,! 时停止 ,所以return 2
long a = 63;
QString s = QString::number(a, 16);             // s == "3f"

QString t = QString::number(a, 16).toUpper();     // t == "3F"
 
 QString str = "Bananas";
str.startsWith("Ban"); //判断str的开头是否以"Ban"开头,returns true
str.startsWith("Car"); // returns false

常用四则运算符:

QString str="*+-";
str.indexOf(QRegExp("[+-]"));    //匹配一次+或-,所以return 1 str="*asd12345682";
str.indexOf(QRegExp(""));     //匹配23成功,return 5 str="*abcsd8de";
str.indexOf(QRegExp("[0-9]"));     //匹配一次0~9数字,所以return 6

 示例-通过四则运算匹配一个范围的数字

比如:

12.5-19.5Kg    :提取出12.5 和19.5

125.68m~376.78m  :提取出125.68和376.78

999.99美元    :提取出999.99

代码如下:

    QString text = ui->stringText->text();
QString number1,number2; int begin1=text.indexOf(QRegExp("[0-9]"));
text.remove(,begin1);
int begin2=text.indexOf(QRegExp("[^0-9.]")); //找非0~9,小数点以外的字符位置
if(begin1==-)
{
qDebug()<<"err";
return ;
} if(begin2!=-) //比如 123XYZ
number1 = text.left(begin2);
else //只有一个数字
{
number1 = text;
qDebug()<<"range:"<<number1.toFloat();
return ;
} text.remove(,begin2);
begin1=text.indexOf(QRegExp("[0-9]"));
text.remove(,begin1);
begin2=text.indexOf(QRegExp("[^0-9.]")); //找非0~9,小数点以外的字符位置
if(begin1==-) //只有一个数字
{
qDebug()<<"range:"<<number1.toFloat();
return ;
} if(begin2!=-) //比如 123XYZ
number2 = text.left(begin2);
else
number2 = text; qDebug()<<"range:"<<number1.toFloat()<<"~"<<number2.toFloat();

打印如下:

其它使用:

QByteArray QString::toLocal8Bit () ;
//获取字节数组对象
char * QByteArray::data (); //通过字节数组对象的成员data函数,获取char数组

  
QString("%1").arg(cnt,,,QChar('0'

5.QT-QString类的更多相关文章

  1. QT QString类

    字符串有如下几个操作符 QString提供了一个二元的"+"操作符用于组合两个字符串,并提供了一个"+="操作符用于将一个字符串追加到另一个字符串的末尾,例如: ...

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

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

  3. Qt 的QString类的使用

    Qt的QString类提供了很方便的对字符串操作的接口. 使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替. QString::fill ( QChar ch, int size ...

  4. Qt常用类——Qstring

    Qstring有一些方面跟C/C++中的string的使用,例如把一个字符串追加到另一个字符串中,也是用“+”.也有append函数等. 下面是是Qstring的一些常用的具体函数示例: Qt的QSt ...

  5. Qt学习之路(1)------Qt常用类用法说明

    Qt常用类 向控制台输出文本 第一个例子,我们采用STL的方式: console.cpp #include <iostream> int main() { std::cout <&l ...

  6. QString类的使用(无所不包,极其方便)

    Qt的QString类提供了很方便的对字符串操作的接口. 使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替. QString::fill ( QChar ch, int size ...

  7. Qt 串口类QSerialPort 使用笔记

    Qt 串口类QSerialPort 使用笔记 虽然现在大多数的家用PC机上已经不提供RS232接口了.但是由于RS232串口操作简单.通讯可靠,在工业领域中仍然有大量的应用.Qt以前的版本中,没有提供 ...

  8. 详解 QT 主要类 QWidget

    QWidget类是所有用户界面对象的基类,每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. 先来看内容. AD: 2013云计算架构师 ...

  9. 【学习笔记】QT常用类及应用

    一.QT基类: QObject 二.QT中常用的库 QT中的类根据功能划分在不同的库中,在用户属性.pro文件中可以看到. 三.Qt基本对话框的使用 常用5类: 通过类名可以直接调用类的静态成员函数. ...

  10. Qt QString转char[]数组

    Qt QString转char[]数组 QString s1="1234456";char str[20]={0};strcpy(str,s1.toStdString().c_st ...

随机推荐

  1. 在码云(gitee)上展开程序类课程教学

    码云主要提供了源代码管理(Git/SVN)功能,最近又推出了高校版让普通老师也能利用起来以供教学使用. 学生与老师不仅能利用其管理代码,更重要的是我们的程序教学能通过对git的使用来引入业界流行的软件 ...

  2. Java虚拟机:内存分配策略

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! Java中提倡的自动内存管理机制最终可以归结为自动化的解决两个问题:给对象分配内存和回收分配给对象的内存.在之前的博客中已经详细讲解了内存 ...

  3. Metasploit Framework(2)Exploit模块、Payload使用

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 Exploit模块分为主动和被动(Active.Pas ...

  4. 来啊踩fastjson打印入参导致业务跑偏的坑

    线上代码对日志的记录,重要性自不必说.但是怎样记录日志也是有讲究的! 日志可以直接在每个方法中进行日志记录,优点是想怎么记就怎么记,缺点是记日志的代码可能会超过你的业务代码,可读性急剧下降,这也是日志 ...

  5. Linux(Centos平台)RabbitMQ消息中间件服务器搭建

    本篇结合接口测试平台部署来讲,不了解的请先查看我的另一篇文档,HttpRunnerManager接口测试平台部署在服务器上(Centos + python3.6 + Mysql5.7 + uwsgi ...

  6. 深入分析Java I/O的工作机制 (二)

    2.磁盘I/C工作机制 2.1几种访问文件的方式 内核空间和用户空间:内核空间是内核使用,用户空间是应用程序使用:除非编译内核要考虑内核空间,其余情况都可以按照用户空间处理.将用户空间和内核空间置于这 ...

  7. freemarker变量自加

    [#assign i = 0][#list dateList as item][#assign i = i + 1]<li><input type="radio" ...

  8. 1.numpy的用法

    numpy创建ndarray对象的三种方法 1.1.list转化 In [8]: import numpy as np In [9]: a = [1,2,3,4] In [10]: x1 = np.a ...

  9. 如何正确的在项目中接入微信JS-SDK

    微信JS-SDK的功能 如果你点进来,那么我相信你应该知道微信的JS-SDK可以用来做什么了.微信的官方文档描述如下. 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. ...

  10. Node.js 获取微信JS-SDK CONFIG

    背景 前端在调用微信提供的分享.拍照.扫一扫等功能时需要到后台获取配置,主要是签名(signature).Node 开发可以用朴灵大佬的SDK--co-wechat-api. 配置 到微信公众平台进入 ...