QT之QString

2023-05-16

字符串类(QString):

在Qt官方文档中是这样描述QString的:The QString class provides a Unicode character string.
我们可以将做C++中的string,但QString提供了更多有用的操作
在使用QString时需要包含头文件 #include <QString>

QString的常见操作:

组合字符串:

1.使用二元操作符"+"组合两个字符串

QString str1= "Hello", str2("World");
QString str3 = str1 + str2 + "!";
qDebug() << str3;

2.使用"+="操作符

QString str1 = "Hello";
str1 += " World!";
qDebug() << str1;

3.也可以使用QString::append()函数实现在一个字符串末尾添加一个字符串

QString str1 = "Hello";
str1.append(" World!");
qDebug() << str1;

4.使用QString::sprintf()也可以组合字符串,其支持的格式与C++中sprintf()函数定义的一样

QString str1;
str1.sprintf("%s", "Hello ");
str1.sprintf("%s %s", "Hello ", "World!");
qDebug() << str1;

5.相比于QString::sprintf(),QString::arg()或许是个更好的选择,该函数的重载可以处理很
多种数据类型,此外还提供额外的参数对字段宽度、数字基数、浮点数精度进行控制,且它类型
安全,完全支持Unicode,并且允许改变"%n"参数的顺序。

QString str1;
str1 = QString("%1 is a %2.").arg("Bob").arg("boy");
qDebug() << str1;

除了组合字符串之外,还提供了很多其他操作:
QString::insert():在指定位置后插入一个字符串
QString::prepend():在源字符串开头插入一个字符串
QString::replace(): 用指定字符串代替源字符串中的指定内容

QString::trimmed():删除字符串两端的空白字符
QString::simplified(): 删除字符串两端的空白字符,并用单个空白字符代替字符串中出现的空白字符
注意:前面三个函数会对源字符串本身做出更改,而后两个函数返回的是源字符串被操作后所
得内容的一个新的字符串,源字符串本身不会被修改

QString str1 = "  AAA   BBB CCC   ";
qDebug() << str1;
str1.insert(2, "ZZZ");
qDebug() << str1;
str1.prepend("DDD");
qDebug() << str1;
str1.replace("AAA", "111");
qDebug() << str1;
str1 = str1.trimmed();
qDebug() << str1;
str1 = str1.simplified();
qDebug() << str1;
    
/* 程序输出:
"  AAA   BBB CCC   "
"  ZZZAAA   BBB CCC   "
"DDD  ZZZAAA   BBB CCC   "
"DDD  ZZZ111   BBB CCC   "
"DDD  ZZZ111   BBB CCC"
"DDD ZZZ111 BBB CCC"
*/ 

查询字符串数据:

1.QString::startsWith()用于判断字符串是否由指定字符串开头,可以设置是否大小写敏感(默认为大小写敏感)
2.QString::endsWith()用于判断字符串是否由指定字符串结尾,可以设置是否大小写敏感(默认为大小写敏感)
3.QString::contains()用于判断字符串内是否含有指定子串

QString str1 = "Hello World!";

if (str1.startsWith("Hello", Qt::CaseSensitive))
    qDebug() << "str1 start with Hello";

// 设为大小写不敏感
if (str1.endsWith("world!", Qt::CaseInsensitive))
    qDebug() << "str1 end with world";

if (str1.contains("Hello"))
    qDebug() << "str1 contains Hello";

/* 程序输出:
str1 start with Hello
str1 end with world
str1 contains Hello
*/

比较两个字符串可以使用:

1.运算符:<、>、==、>=、<=
2.QString::localeAwareCompare(const QString &str1, const QString &str2);
比较两个字符串,若str1大于str2,返回正整数,若str1小于str2,返回负整数,若str1等于str2,返回0
3.QString::compare(const QString &str1, const QString &str2, Qt::CaseSensitive/Qt::CaseInsensitive);
与QString::localeAwareCompare()功能相似,但却可以设置是否大小写敏感(默认敏感)

QString str1 = "AAA", str2 = "BBB", str3 = "Aaa";

if (str1 <= str2)
    qDebug() << str1 << "<=" << str2;
else
    qDebug() << str1 << ">" << str2;

int result = QString::compare(str1, str3, Qt::CaseInsensitive);

if (result > 0)
    qDebug() << str1 << ">" << str3;
else if (result < 0)
    qDebug() << str1 << "<" << str3;
else
    qDebug() << str1 << "=" << str3;
/*
 *输出结果:
 *  "AAA" <= "BBB"
 *  "AAA" = "Aaa"
 */

将QString转化为其他类型(此类函数有很多,下面只列出常用的几个,若有需要,可以查看Qt文档):

QString::toInt()
QString::toDouble()
QString::toFloat()
QString::toLong()
QString::toLongLong()

注意:

QString字符串的Empty与NULL,即默认构造函数创建QString与通过QString("")构造时

QString str1, str2("");

if (str1.isEmpty())
    qDebug() << "str1 is Empty";
else
    qDebug() << "str1 is not Empty";

if (str1.isNull())
    qDebug() << "str1 is NULL";
else
    qDebug() << "str1 is not NULL";

if (str2.isEmpty())
    qDebug() << "str2 is Empty";
else
    qDebug() << "str2 is not Empty";

if (str2.isNull())
    qDebug() << "str2 is NULL";
else
    qDebug() << "str2 is not NULL";
/*
输出结果:
str1 is Empty
str1 is NULL
str2 is Empty
str2 is not NULL
*/

除了上面介绍的函数外,QString还有很多功能强大的函数,可以在Qt文档或QCreator的Help中查看

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT之QString 的相关文章

  • QString转换QByteArray时中文问题解决方案

    平常转换没怎么注意 xff0c 一般QString转换成QByteArray不会出现问题 xff0c 今天涉及到QJsonDocument类 xff0c 转换出现以下问题 xff1a 1 用toLocal8Bit QJsonDocument
  • QString转化为char*

    QByteArray temp ip span class token operator 61 span mqtt config span class token punctuation span ip span class token p
  • std::string、const char*、QString之间相互转换

    字符串转换 std string 转 const char std string str 61 34 string 34 const char cstr 61 str c str const char 转 std string span c
  • Qt中 QString 和int, char等的“相互”转换

    原文链接 xff1a https blog csdn net ei nino article details 7297791 Qt中 int float double转换为QString 有两种方法 1 使用QString number 如
  • Qt学习 第37节:QString

    在阅读QString文档时 xff0c 出了一个词 implicit sharing copy on write xff0c 不是很懂 xff0c 下面链接解释的表明白 QT的隐式共享 Implicit Sharing 道路与梦想 CSDN
  • QString : 类型转换,不留神就留坑?

    QString作为Qt中内置的数据类型 功能强大且使用方便 绝对是在Qt开发过程中出场率最高的数据类型 本篇我们只重点探讨下QString转换成其他数据类型的注意事项 short toShort bool ok nullptr int ba
  • QString,const char*,char*相互直接转换方法

    整合网络上的解决方法 解决方法一 1 string转const char string s abc const char c s s c str const char 转string 直接赋值即可 const char c s abc st
  • 关于QString的常见用法(详细讲解)

    QString类提供一个unicode字符串 在QT软件开发平台中常用到的一种变量类型 其提供了很多方便的应用方法 下面介绍一些关于QString的常见用法 1 字符串末尾追加 example 1 QString str hello str
  • QString 仅替换第一次出现的位置

    有没有简单的方法可以仅用 QString 中的其他子字符串替换某些子字符串的第一次出现 它可以在任何位置 你可以试试这个 QString str this is a string The initial string QString sub
  • 在 Qt 中将字符数组的内容复制到 QString

    我有一个字符指针 在任何运行中都可以有不同的长度 例如 char myChar 一次运行其内容可以是 Hi 在另一次运行中它可以是 Bye 我想复制内容myChar到 QString 例如如果我有 QString myString 我想复制
  • 如何将字符串转换为QString?

    最基本的方法是什么 如果使用 STL 兼容性进行编译 QString has a 静态方法转换一个std string to a QString std string str abc QString qstr QString fromStd
  • 非 QObject 派生类是否应该“始终”放入堆栈中?

    来自 Symbian 世界 我习惯于尽可能多地使用堆以避免耗尽堆栈空间 特别是在处理描述符时 CBase 派生类总是在堆上动态分配 因为如果不这样做 它们的成员变量将保持未初始化状态 相同的约定是否适用于 QObject 派生类 在 Qt
  • 将 QString 转换为 std::string

    我看过其他几篇关于将 QString 转换为 std string 的帖子 它应该很简单 但不知怎的 我收到了一个错误 我的代码使用cmake编译成VS项目 我使用的是VS Express 所以QT库没有问题 而且我编写的GUI除了这部分之
  • 如何使用 GoogleTest 框架漂亮地打印 QString?

    我将 GoogleTest GTest 框架与 Qt5 应用程序结合使用 每当使用 QString 参数的测试失败时 框架就会尝试打印所有涉及的值 但是 它无法自动处理外部类型 本例中为 Qt5 的 QString QString test
  • for循环中的Qt字符串生成器

    下列的this http labs qt nokia com 2011 06 13 string concatenation with qstringbuilder and this http doc snapshot qt project
  • QString 的运算符 <<

    为 QString 实现 std ostream operator lt lt std ostream stream const QString str stream lt lt str toAscii constData or strea
  • Qt C++ QString 到 QByteArray 转换

    我创建了一个加密 解密程序 加密时我将加密的 QByteArray 存储在文本文件中 当尝试解密时 我检索了它 然后将其放入解密方法中 问题是我需要一种将其转换为 QByteArray 的方法不改变格式 否则无法正确解密 我的意思是 如果该
  • 将 QStringList (PyQt) 转换为普通的 Python 列表

    我想获取 qstringlist 中的每个元素并从列表中获取原始数据 而不是 pyqt 将其存储为的任何数据 def find self self foundFileList setRowCount 0 fileName self inpu
  • Qt 为什么使用 QString::number() 而不是 QLocale().toString()?

    我正在开发的应用程序将在许多国家推出 并且需要支持他们的语言 我一直在回顾我的代码并替换以下每个实例 QString number and QString toDouble with QLocale toString and QLocale
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod

随机推荐

  • Field ‘browser‘ doesn‘t contain a valid alias configuration

    意思是字段 39 browser 39 不包含有效的别名配置 意思就是说你打包的css路径不对 这个是我的代码 这里js里面导入的css路径不对 xff0c css文件夹不是和index js平级 xff0c 应该是上级所以正确的代码应该是
  • Failed to load resource: the server responded with a status of 404 (Not Found)

    问题场景 xff1a 编写路由模块 解决方法 xff1a 1 先检测路径是否有写错 2 将vscode中开的插件vetur关闭 3 上面方法不管用时 xff0c 将浏览器插件关闭 xff0c 例如油猴 有什么错误望大佬指出 xff01 xf
  • Vue3.js【未完成】

    Vue3 js 如何关闭烦人的vscode的提示框 https blog csdn net liuyuemozhu article details 101056556 ES6模块化与异步编程高级用法 ES6模块化 1 回顾 xff1a no
  • npm ERR! code ERESOLVEnpm ERR! ERESOLVE unable to resolve dependency tree

    npm下载报错 xff0c 这个是因为npm版本问题 xff0c 例如我下载element ui运行npm i element ui S 因为版本问题我就无法下载 xff0c 解决办法就是在末尾加上 legacy peer deps 即np
  • 前端面试题

    浏览器 输入一个URL到页面过程中发生了什么 xff08 高频 xff09 首先在浏览器中输入URL 查找缓存 xff1a 浏览器先查看浏览器缓存 系统缓存 路由缓存中是否有该地址页面 xff0c 如果有则显示页面内容 如果没有则进行下一步
  • MATALAB动态爱心代码

    第一步 xff1a 先下载MATLAB软件 xff08 该代码只适用于此软件 xff0c 要下载软件才可运行 xff09 第二步 xff1a 点击主页 新建脚本 xff08 可自己给脚本命名 xff0c 我命名的是aixin xff09 第
  • Linux相关博文中使用的头文件

    收录博文中看到的已经封装好的文件时 xff0c 方便各位查看 Log hpp 日志信息 pragma once include lt iostream gt include lt cstdio gt include lt cstdarg g
  • 构造函数和析构函数执行顺序

    析构函数运行顺序 xff1a 1 主函数结束 xff1b 2 函数调用结束 xff1b 3 用delete删除 xff08 new创建的 xff09 对象时 注释代码运行结果 输入坐标6 xff0c 3 xff0c 6 xff0c 2 xf
  • 27.【C/C++ 最全vector数组的用法 (详解)】

    vector动态数组 xff08 一 xff09 什么是vector xff1f xff08 二 xff09 vector的作用是什么 xff08 三 xff09 经典用法 1 vector函数的定义 代码展示 效果展示 2 vector的
  • 析构函数运行顺序

    全局变量 xff0c 静态局部变量 xff0c 局部变量空间的堆分配和栈分配 其中全局变量和静态局部变量时从 静态存储区中划分的空间 xff0c 二者的区别在于作用域的不同 xff0c 全局变量作用域大于静态局部变量 xff08 只用于声明
  • 03_临界段的保护

    一 临界段的概念 所谓的临界段就是在执行时不能被中断的代码段 在FreeRTOS中 xff0c 临界段最常出现的地方就是对全局变量的操作 那么什么情况下临界段会被打断 xff1f 一个是系统调度 xff0c 还有一个是外部中断 在FreeR
  • Qt自定义窗口继承基类

    设计一个窗口基类模板 xff0c 方便子类的统一风格使用 xff0c 省略重写事件函数 xff0c 代码思路
  • ROS学习笔记4:创建工作空间和功能包

    一 linux命令行使用基础 xff1a 1 cd命令 xff08 change directory xff09 xff1a xff08 1 xff09 语法 xff1a cd dirName xff08 dirName xff1a 要切换
  • 一段代码给你讲清楚【链式存储结构】

    1 基础定义 链式存储结构 xff08 linked storage structure xff09 xff0c 是逻辑存储结构的一种 xff0c 链式存储结构中每一个逻辑元素用一个内存结点存储 xff0c 每一个结点都是单独分配的 xff
  • Flask之before_request与after_request

    Flask之before request与after request 更多的用法或说明请查看文档 xff1a https dormousehole readthedocs io en latest api html flask Flask
  • C++教程之迭代器Iterator

    前言 之前的两篇文章我们主要了解了vector和string的相关知识 xff0c 从中我们知道可以通过下标来访问vector的元素或者string的字符 xff0c 但是除了这种方式还有一种更为通用的方式获取元素 xff0c 那就是迭代器
  • Qt 绘制图表 - Qt Charts版

    一 前言 自从 Qt 发布以来 xff0c 给广大跨平台界面研发人员带来了无数的福利 但是Qt自己却一直没有提供自带的图表库 xff0c 这就使得 QWT QCustomPlot 等第三方图表库有了巨大的生存空间 xff0c 为了降低开发成
  • Qt 多线程使用moveToThread

    Qt有两种多线程的方法 xff0c 其中一种是继承QThread的run函数 xff0c 另外一种是把一个继承于QObject的类用moveToThread函数转移到一个Thread里 Qt4 8之前都是使用继承QThread的run这种方
  • Qt 之http学习

    在Qt网络编程中 xff0c 需要用到协议 xff0c 即HTTP 它是超文本传输协议 xff0c 它是一种文件传输协议 新建工程名为 http xff0c 然后选中QtNetwork模块 xff0c 最后Base class选择QWidg
  • QT之QString

    字符串类 QString xff1a 在Qt官方文档中是这样描述QString的 xff1a The QString class provides a Unicode character string 我们可以将做C 43 43 中的str