QT学习笔记(十一):QString类

QT学习笔记(十一):QString类

    • 1、概述
    • 2、编辑操作
    • 3、查询操作
    • 3、转换操作

1、概述

1.1 QString 类是 Qt 中用于表示字符串的类,实现在 QtCore 共享库中。QString 类在实现上有以下特征:

1)字符串采用 Unicode 内部编码,可以表示世界上大多数语言的文字;
2)字符串的存储有引用计数,当一个 QString 对象被复制为另一个 QString 对象时,它们实际上指向相同的存储空间,仅仅是增加一个引用计数;
3)隐式共享:在后台,QString使用隐式共享来减少内容使用和避免不必要的复制,这也有助于减少储存16为字符的固有开销,只有当函数向它写入时才会复制该数据或者当指向相同存储空间的多个 QString 对象中的一个要被修改时,才将真正复制一个新的字符串并进行修改。
1.2 构造函数

Qstring();                                        // 构造空字符串QString(QChar ch);                           // 由 QChar 对象 ch构造QString(const QChar *pch, int size);    // 由 QChar 数组pch构造,size 是数组大小QString(const QString &obj);              // 拷贝构造函数QString(const char *str);                  //  由字符串 str 构造,str是一个普通字符串

参考博客:QT之QString,
官方说明:QString Class

2、编辑操作

在这里插入图片描述
编辑操作QT控制台程序 示例:

#include <QCoreApplication>
#include <QDebug>
#include <QStringList>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug() << QObject::tr("以下是编辑字符串操作:") << endl;QString str = "hello";// 执行下面一行代码,大小为5qDebug() << QObject::tr("字符串大小:") << str.size(); 	str[0] = QChar('H');      								// 将第一个字符换为‘H'// 执行下面一行代码,结果为‘H'qDebug() << QObject::tr("第一个字符:") << str[0]; 	str.append(" Qt");        								// 向字符串后添加"Qt"str.replace(1,4,"i");     								// 将第1个字符开始的后面4个字符替换为字符串"i"str.insert(2," my");      								// 在第2个字符后插入" my"// 执行下面一行代码,结果为Hi my QtqDebug() << QObject::tr("str为:") << str; 				str = str + "!!!";        								// 将两个字符串组合// 执行下面一行代码,结果为Hi my Qt!!!qDebug() << QObject::tr("str为:") << str; 				str = " hi\r\n Qt!\n  ";qDebug() << QObject::tr("str为:") << str;QString str1 = str.trimmed();    						// 除去字符串两端的空白字符qDebug() << QObject::tr("str1为:") << str1;QString str2 = str.simplified(); 						// 除去字符串两端和中间多余的空白字符//结果为hi Qt!qDebug() << QObject::tr("str2为:") << str2; 			str = "hi,my,,Qt";// 从字符串中有","的地方将其分为多个子字符串,// QString::SkipEmptyParts表示跳过空的条目QStringList list = str.split(",",QString::SkipEmptyParts);// 执行下面一行代码,结果为hi,my,QtqDebug() << QObject::tr("str拆分后为:") << list;  		str = list.join(" "); 									// 将各个子字符串组合为一个字符串,中间用" "隔开// 执行下面一行代码,结果为hi my QtqDebug() << QObject::tr("list组合后为:") << str;  		qDebug() << QString().isNull();     // 结果为trueqDebug() << QString().isEmpty();    // 结果为trueqDebug() << QString("").isNull();   // 结果为falseqDebug() << QString("").isEmpty();  // 结果为truereturn a.exec();
}

运行结果:
在这里插入图片描述

3、查询操作

在这里插入图片描述
查询操作QT控制台程序 示例:

#include <QCoreApplication>
#include <QDebug>
#include <QStringList>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug() << endl << QObject::tr("以下是在字符串中进行查询的操作:") <<endl;str = "yafeilinux";qDebug() << QObject::tr("字符串为:") << str;// 结果为linuxqDebug() << QObject::tr("包含右侧5个字符的子字符串:") << str.right(5);// 结果为yafeiqDebug() << QObject::tr("包含左侧5个字符的子字符串:") << str.left(5);// 结果为feiqDebug() << QObject::tr("包含第2个字符以后3个字符的子字符串:") << str.mid(2, 3);//结果为2qDebug() << QObject::tr("'fei'的位置:") << str.indexOf("fei"); //结果为yqDebug() << QObject::tr("str的第0个字符:") << str.at(0); 	//结果为2qDebug() << QObject::tr("str中'i'字符的个数:") << str.count('i'); // 结果为trueqDebug() << QObject::tr("str是否以”ya“开始?") << str.startsWith("ya");// 结果为trueqDebug() << QObject::tr("str是否以”linux“结尾?") << str.endsWith("linux");// 结果为trueqDebug() << QObject::tr("str是否包含”lin“字符串?") << str.contains("lin");QString temp = "hello";// 两字符串进行比较,结果为yafeilinuxif(temp > str) qDebug() << temp; else qDebug() << str;qDebug() << endl << QObject::tr("以下是字符串的转换操作:") << endl;str = "100";// 结果为100qDebug() << QObject::tr("字符串转换为整数:") << str.toInt(); int num = 45;//结果为"45"qDebug() << QObject::tr("整数转换为字符串:") << QString::number(num);str = "FF";bool ok;int hex = str.toInt(&ok, 16);// 结果为ok:true 255qDebug() << "ok: "<< ok << QObject::tr("转换为十六进制:") << hex;num = 26;//结果为1aqDebug() << QObject::tr("使用十六进制将整数转换为字符串:")<< QString::number(num, 16);str = "123.456";//结果为123.456qDebug() << QObject::tr("字符串转换为浮点型:") << str.toFloat();str = "abc";// 结果为ABCqDebug() << QObject::tr("转换为大写:") << str.toUpper();str = "ABC";// 结果为abcqDebug() << QObject::tr("转换为小写:") <<str.toLower();int age = 25;QString name = "yafei";// name代替%1,age代替%2str = QString("name is %1, age is %2").arg(name).arg(age);// 结果为name is yafei, age is 25qDebug() << QObject::tr("更改后的str为:") << str;str = "%1 %2";// 结果为%1f helloqDebug() << str.arg("%1f","hello");    // 结果为hellof %2  qDebug() << str.arg("%1f").arg("hello"); str = QString("ni%1").arg("hi",5,'*');//结果为ni***hiqDebug() << QObject::tr("设置字段宽度为5,使用'*'填充:") << str;qreal value = 123.456;str = QString("number: %1").arg(value,0,'f',2);//结果为"number:123.45qDebug() << QObject::tr("设置小数点位数为两位:") << str;  // 执行下面一行代码,结果为number:123.45不会显示引号qDebug() << QObject::tr("将str转换为const char* :") << qPrintable(str);return a.exec();
}

运行结果:
在这里插入图片描述

3、转换操作

关于QString::arg()函数详解请参见: QT学习笔记(六):QString::arg()函数用法小结.
在这里插入图片描述在这里插入图片描述在这里插入图片描述
转换操作QT控制台程序 示例:

#include <QCoreApplication>
#include <QDebug>
#include <QStringList>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug() << endl << QObject::tr("以下是字符串的转换操作:") << endl;str = "100";// 结果为100qDebug() << QObject::tr("字符串转换为整数:") << str.toInt(); int num = 45;//结果为"45"qDebug() << QObject::tr("整数转换为字符串:") << QString::number(num);str = "FF";bool ok;int hex = str.toInt(&ok, 16);// 结果为ok:true 255qDebug() << "ok: "<< ok << QObject::tr("转换为十六进制:") << hex;num = 26;//结果为1aqDebug() << QObject::tr("使用十六进制将整数转换为字符串:")<< QString::number(num, 16);str = "123.456";//结果为123.456qDebug() << QObject::tr("字符串转换为浮点型:") << str.toFloat();str = "abc";// 结果为ABCqDebug() << QObject::tr("转换为大写:") << str.toUpper();str = "ABC";// 结果为abcqDebug() << QObject::tr("转换为小写:") <<str.toLower();int age = 25;QString name = "yafei";// name代替%1,age代替%2str = QString("name is %1, age is %2").arg(name).arg(age);// 结果为name is yafei, age is 25qDebug() << QObject::tr("更改后的str为:") << str;str = "%1 %2";// 结果为%1f helloqDebug() << str.arg("%1f","hello");    // 结果为hellof %2  qDebug() << str.arg("%1f").arg("hello"); str = QString("ni%1").arg("hi",5,'*');//结果为ni***hiqDebug() << QObject::tr("设置字段宽度为5,使用'*'填充:") << str;qreal value = 123.456;str = QString("number: %1").arg(value,0,'f',2);//结果为"number:123.45qDebug() << QObject::tr("设置小数点位数为两位:") << str;  // 执行下面一行代码,结果为number:123.45不会显示引号qDebug() << QObject::tr("将str转换为const char* :") << qPrintable(str);return a.exec();
}

运行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能六十年技术简史

作者 | 李理出品 | AI科技大本营&#xff08;rgznai100&#xff09;人类的进化发展史就是一部人类制造和使用工具的历史&#xff0c;不同的工具代表了人类的进化水平。从石器时代、铁器时代、蒸汽时代、电气时代再到现在的信息时代&#xff0c;我们使用更加先进便捷的工具来改变…

QT学习笔记(十二):透明窗体设置

QT学习笔记&#xff08;十二&#xff09;&#xff1a;透明窗体设置 创建 My_Widget 类 基类为QWidget &#xff0c; My_Widget.cpp 源文件中添加代码 #include "widget.h" #include "ui_widget.h"#include <QGraphicsDropShadowEffect>// 构造函数…

【新书】崛起的超级智能:互联网大脑如何影响科技未来

来源&#xff1a;刘锋的未来课堂2019年7月&#xff0c;《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》由中信出版社正式出版。作者刘锋。吕乃基、石勇、吕本富做序。张亚勤、刘慈欣、周鸿祎、王飞跃、约翰.翰兹等专家为这本书撰写了推荐语。《崛起的超级智能》主要…

OpenCV学习笔记(一):Win10(x64)+Qt5.8(MSVC2013)+OpenCV3.1.0配置过程

OpenCV学习笔记&#xff08;一&#xff09;&#xff1a;Win10(x64)Qt5.8(MSVC2013)OpenCV3.1.0配置过程 Win10(x64)Qt5.8(MSVC2013)OpenCV3.1.0配置过程 配置需求 原版 Win10(x64) Qt5.8(MSVC2013) OpenCV3.1.0 第一步&#xff1a;安装QT 5.8 和OpenCV3.1.0 并配置环境变量…

Windows10安装TeXlive和TeXstudio

参考https://blog.csdn.net/aiwei169/article/details/81431363 进入官网http://tug.org/texlive/ 第一步 第二步 第三步 第四步 等待 安装包下载 解压下载的文件&#xff0c;将解压后的安装包放在英文路径下&#xff08;即不要包含中文的路径&#xff09; 修改安装路径&am…

QT环境配置:QT5.8.0与VS2013环境配置

QT环境配置&#xff1a;QT5.8.0与VS2013环境配置 1、下载VS2013&#xff0c;QT5.8.0&#xff0c;qt-vs-tools-msvc2013-2.1.1。 1&#xff09;VS2013版本为&#xff1a;Visual Studio Ultimate 2013 2&#xff09;QT5.8.0版本为&#xff1a;qt-opensource-windows-x86-msvc20…

云计算与边缘计算协同的九大应用场景剖析

来源 | 中国信息通信院CAICT未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&…

QT学习笔记(十三):绘制图像

QT学习笔记&#xff08;十三&#xff09;&#xff1a;绘制图像 paintEvent() 事件源码添加&#xff1a; #include <QPainter> #include <QImage> #include <QPixmap> #include <QBitmap> #include <QPicture>void Widget::paintEvent(QPaintEve…

【Robot学院】一文读懂世界智能制造大趋势!

本文来源&#xff1a;智造智库工业4.0在德国被认为是第四次工业革命&#xff0c;主要是指&#xff0c;在“智能工厂”利用“智能设备”将“智能物料”生产成为“智能产品”&#xff0c;整个过程贯穿以“网络协同”&#xff0c;从而提升生产效率&#xff0c;缩短生产周期&#x…

QT学习笔记(十四):QLayout的属性介绍

QT学习笔记&#xff08;十四&#xff09;&#xff1a;QLayout的属性介绍 主要包括QBoxLayout、和QGridLayout以及QFormLayout等的参数类似。 我主要说明一下QGridLayout在QtDesigner中它的属性的意义&#xff0c;以及QFormLayout的部分属性 一、QGridLayout属性介绍 1、QGri…

查找所引用的文献在某种期刊下的引用格式(引用风格)

当我们要引用一篇文献时&#xff0c;常常需要知道这篇文献在某种期刊下的引用格式是怎样的。举个例子&#xff0c;我需要查找“Gradient-based learning applied to document recognition”这篇文献在Neuroimage期刊下的引用格式怎么写。 首先在谷歌学术上搜索“Gradient-base…

web desktop在线演示

http://mydesk.sinaapp.com基于extjs的web desktop应用框架。 1、跨浏览器2、动态载入所需css,js文件3、权限管理4、支持多语种5、支持asp,jsp,php6、Sql server2008数据库QQ: 623076512 Email&#xff1a; mychirs21cn.com 转载于:https://www.cnblogs.com/mengfanrong/p/5…

贝叶斯网络之父:当前的机器学习其实处于因果关系之梯的最低层级

来源&#xff1a;大数据文摘每当提起“无人驾驶”汽车技术如何强大&#xff0c;又被大众赋予了怎样的期待&#xff0c;都会让人想起HBO电视剧Silicon Valley《硅谷》中的一个情节&#xff1a;硅谷大亨风险资本家Gregory的助手安排了一辆无人驾驶汽车送创业公司的小员工Jared回家…

QT学习笔记(十五):QLabel的点击事件(clicked)添加

QT学习笔记&#xff08;十五&#xff09;&#xff1a;QLabel的点击事件&#xff08;clicked&#xff09;添加 Qt之添加QLabel的点击事件 QLabel功能为显示了一个字符串或者图片等信息&#xff0c;它本身没有click信号。也就不能够响应click点击事件&#xff0c;有什么办法来实…

引用文献管理软件Mendeley

Mendeley是一款强大的文献管理软件&#xff0c;只需要把引用的文献导入进去&#xff0c;就可以生成各种风格的文献引用格式 首先去官网下载Mendeley&#xff1a;https://www.mendeley.com/download-desktop/ 安装好&#xff0c;打开后点击add添加文献&#xff1a; 添加文献的方…

​忆阻器会成为“存储墙”的破局者么

来源&#xff1a;半导体行业观察在计算量和数据量变得越来越大的今天&#xff0c;计算和存储成为了下一步科技发展中要面临的两座大山&#xff0c;下一代高性能计算机系统必须突破存储墙问题。在过去&#xff0c;这两者一直都是各自发展&#xff0c;再通过下游产品产生交集。但…

Halcon学习笔记(一):Qt+Halcon联合开发配置

Halcon学习笔记(1)&#xff1a;QtHalcon联合开发配置 首先是新建一个QT项目qtest_hc 方法一&#xff1a; 1)QT项目文件 qtest_hc 添加库&#xff1a; #1.包含目录添加 INCLUDEPATH D:/MVTec/HALCON-13.0/include INCLUDEPATH D:/MVTec/HALCON-13.0/include/halconcpp#2.链…

C1. 组队活动 Small(BNUOJ)

C1. 组队活动 SmallTime Limit: 1000msMemory Limit: 131072KB64-bit integer IO format: %lld Java class name: MainSubmit Status PID: 51280BNU ACM校队一共有名队员&#xff0c;从到标号&#xff0c;现在名队员要组成若干支队伍来相互学习、共同进步&#xff0c;为了…

窥见人工智能四十年 2019 CCF-GAIR全球人工智能与机器人峰会今日开幕

编者按&#xff1a;7月12日-14日&#xff0c;2019年全球人工智能与机器人峰会&#xff08;CCF-GAIR&#xff09;正式开幕&#xff0c;该峰会由中国计算机学会&#xff08;CCF&#xff09;主办&#xff0c;雷锋网、香港中文大学&#xff08;深圳&#xff09;承办&#xff0c;深圳…