Qt的QString类型

Qt的QString数据类型转换(整理) QString与数字之间的转换,QString与QDateTime之间的转换,QString与QByteArray之间的转换,QString与char * 之间的转换。 阅读详情


QString存储字符串采用的是Unicode码,每一个字符是一个16位的QChar,而不是8位的char,所以QString处理中文字符没有问题,而且一个汉字算作是一个字符。

QString转化为其他类型

字符串转整数

QString类从字符串转换为整数的函数有:

int     toInt(bool *ok = Q_NULLPTR, int base = 10)      const
long    toLong (bool *ok = Q_NULLPTR, int base = 10)    const
short   toShort (bool *ok = Q_NULLPTR, int base = 10)   const
uint    toUInt (bool *ok = Q_NULLPTR, int base = 10)    const
ulong   toULong (bool *ok = Q_NULLPTR, int base = 10)   const

字符串转浮点数

QString将字符串转换为浮点数的函数有:

double   toDouble(bool *ok = Q_NULLPTR)    const
float    toFloat (bool *ok = Q_NULLPTR)    const

数值转化成QString

可以使用的函数:

Qstring   &setNum (int n, int base = 10)
QString   number (int n, int base = 10)

转化成其他进制:

int val;
QString::number(val);//默认转化为10进制
QString::number(val,2);
QString::number(val,16);
str=str.setNum(val,16);

浮点数转化为QString的时候设置保留的位数

QString str;
//QString的静态函数number()和asprintf()
str=QString::number(total,'f',2); 
str=QString::asprintf("%.2f",total); 
//公共函数setNum()和sprintf()
str=str.setNum(total,'f',2); 
str=str.sprintf("%.2f",total);

QString 是一个类

所以QString是可以像其他的容器一样进行遍历和迭代器的使用。

QString 的常见的函数及功能介绍

QString的函数:

函数名字函数说明
append()和prepend()append()在字符串的后面添加字符串,prepend()在字符串的前面添加字符串
toUpper()和toLower()toUpper()将字符串内的字母全部转换为大写形式,toLower()将字母全部转换为小写形式
count()、size()和length()都返回字符串的字符个数,这3个函数是相同的,但是要注意,字符串中如果有汉字,一个汉字算一个字符。
trimmed()和simplified()trimmed()去掉字符串首尾的空格,simplified()不仅去掉首尾的空格,中间连续的空格也用一个空格替换。
int indexOf (const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const其功能是在自身字符串内查找参数字符串str出现的位置,参数from是开始查找的位置,Qt::CaseSensitivity cs参数指定是否区分大小写。
lastIndexOf()函数则是查找某个字符串最后出现的位置。
isNull()和isEmpty()两个函数都判读字符串是否为空,但是稍有差别。如果一个空字符串,只有“\0”,isNull()返回false,而isEmpty()返回true;只有未赋值的字符串,isNull()才返回true。
contains()判断字符串内是否包含某个字符串,可指定是否区分大小写。
endsWith()和startsWith()startsWith ()判断是否以某个字符串开头,endsWith()判断是否以某个字符串结束。
left()和right()left表示从字符串中取左边多少个字符,right表示从字符串中取右边多少个字符。注意,一个汉字被当作一个字符。
section()section()函数的原型为:QString section (const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const其功能是从字符串中提取以sep作为分隔符,从start端到end端的字符串。
shop从字符串的末尾删除 n 个字符。
shoped从左边返回str.size()-n个字符,即是从右边舍弃n个字符
compare比较字符串
at访问字符串中指定位置的字符
insert指定位置插入字符串
mid指定位置,切割指定长的字符串
arg格式化字符串
replace替换字符
setNum数值转QString
  • append()和prepend()

append()在字符串的后面添加字符串,prepend()在字符串的前面添加字符串,如:

QString str1="卖", str2="拐";
QString str3=str1;
str1.append(str2);    //str1="卖拐"
str3.prepend(str2);   //str3="拐卖"
  • toUpper()和toLower()

toUpper()将字符串内的字母全部转换为大写形式,toLower()将字母全部转换为小写形式,如:

QString str1="Hello, World", str2;
str2=str1.toUpper();   //str2="HELLO,WORLD"
str2=str1.toLower();   //str2="hello, world"
  • count()、size()和length()

count()、size()和length()都返回字符串的字符个数,这3个函数是相同的,但是要注意,字符串中如果有汉字,一个汉字算一个字符。

QString str1="NI好"
N=str1.count()       //N=3
N=str1.size()        //N=3
N=str1.length()      //N=3
  • trimmed()和simplified()

trimmed()去掉字符串首尾的空格,simplified()不仅去掉首尾的空格,中间连续的空格也用一个空格替换。

QString    str1="   Are    you   OK?   ", str2;
str2=str1.trimmed();       //str1="Are    you   OK? "
str2=str1.simplified();    //str1="Are you OK? "
  • indexOf ()和lastIndexOf ()

indexOf()函数的原型为:int indexOf (const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
其功能是在自身字符串内查找参数字符串str出现的位置,参数from是开始查找的位置,Qt::CaseSensitivity cs参数指定是否区分大小写。
lastIndexOf()函数则是查找某个字符串最后出现的位置。

QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.indexOf("5.9");          // N=13
N=str1.lastIndexOf("\\");       //N=21
“\”是转义字符,如果要查找“\”,需要输入“\”。
  • isNull()和isEmpty()

两个函数都判读字符串是否为空,但是稍有差别。如果一个空字符串,只有“\0”,isNull()返回false,而isEmpty()返回true;只有未赋值的字符串,isNull()才返回true。

QString str1, str2="";
N=str1.isNull();   // N=true    未赋值字符串变量
N=str2.isNull();   // N=false   只有"\0"的字符串,也不是Null
N=str1.isEmpty();  // N=true    
N=str2.isEmpty();  // N=true
QString只要赋值,就在字符串的末尾自动加上“\0”,所以,如果只是要判断字符串内容是否为空,常用isEmpty()。
  • contains()

判断字符串内是否包含某个字符串,可指定是否区分大小写。

QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
N=str1. contains (".cpp", Qt::CaseInsensitive);    // N=true,不区分大小写
N=str1. contains (".CPP", Qt::CaseSensitive);      // N=false,区分大小写
  • endsWith()和startsWith()

startsWith ()判断是否以某个字符串开头,endsWith()判断是否以某个字符串结束。

QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
N=str1. endsWith(".cpp", Qt::CaseInsensitive);     // N=true,不区分大小写
N=str1. endsWith(".CPP", Qt::CaseSensitive);       // N=false,区分大小写
N=str1. startsWith("g: ");                         // N=true,缺省为不区分大小写
  • left()和right()

left表示从字符串中取左边多少个字符,right表示从字符串中取右边多少个字符。注意,一个汉字被当作一个字符。

QString str2, str1="学生姓名,男,1984-3-4,汉族,山东";
N=str1.indexOf (",");                             // N=4,第一个","出现的位置
str2=str1.left(N);                                 //str2="学生姓名"
N=str1.lastIndexOf (",");                         // N=18,最后一个逗号的位置
str2=str1.right(str1.size()-N-1); //str2="山东",提取最后一个逗号之后的字符串
  • section()

section()函数的原型为:
QString section (const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const
其功能是从字符串中提取以sep作为分隔符,从start端到end端的字符串。

QString str2, str1="学生姓名,男,1984-3-4,汉族,山东";
str2=str1. section (",",0,0);                    // str2="学生姓名",   第1段的编号为0
str2=str1. section (",",1,1);                    // str2="男"
str2=str1. section (",",0,1);                    // str2="学生姓名,男"
str2=str1. section (",",4,4);                    // str2="山东"
  • arg
    字符串的格式化,拼接自己想要的字符串。QString的示例:

一般性:

    QString i="1";           // current file's number
    QString total="100";       // number of files to process
    QString fileName="file";    // current file's name
    QString status = QString("Processing file %1 of %2: %3")//status="Processing file 1 of 100: file"
                      .arg(i).arg(total).arg(fileName);

进制的转化:

  QString str;
  str = QString("Decimal 63 is %1 in hexadecimal")
          .arg(63, 0, 16);
  // str == "Decimal 63 is 3f in hexadecimal"
  //63转化为16进制再替换。

增加L

QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
  str = QString("%1 %L2 %L3")
          .arg(12345)//直接替换
          .arg(12345)//每三位数字增加,
          .arg(12345, 0, 16);//转化为16进制再替换
  // str == "12345 12,345 3039"
/*'%' 后面可以跟一个 'L',在这种情况下,序列被 a 的本地化表示替换。转换使用默认语言环境,由 QLocale::setDefault() 设置。如果未指定默认语言环境,则使用“C”语言环境。如果基数不是 10,则忽略 'L' 标志。*/

格式输出

    double d = 12.34;
    QString str = QString("delta: %1").arg(d, 0, 'E', 3);
    // str == "delta: 1.234E+01"

arg(QString ,QString ,QString ,…)使用

 QString str;
  str = "%1 %2";

  str.arg("%1f", "Hello");        // returns "%1f Hello"
  str.arg("%1f").arg("Hello");    // returns "Hellof %2"

多个arg使用

QString str;
  str = "%1%3%2";
  str.arg("Hello").arg(20).arg(50); // returns "Hello500"
  //首先,Hello 替换 %1,因此字符串变为“Hello%3%2”。
  //然后,20 替换 %2,因此字符串变为“Hello%320”。由
  //于最大编号位置标记值为 99,因此 50 替换了 %32。

  str = "%1%2%3";
  str.arg("Hello").arg(50).arg(20); // returns "Hello5020"
QString str;
  str = "%1%3%2";
  str.arg("Hello", QString::number(20), QString::number(50)); // returns "Hello5020"
QString result;
  QTextStream(&result) << "pi = " << 3.14;
  // result == "pi = 3.14"
QString类详解 文章目录一、简要介绍1.1 隐式共享二、常用方法2.1 常用构造函数2.2 字符串与数值之间的转换2.3 添加字符串2.4 大小写转换 一、简要介绍 在Qt中表示字符串的类是QString类,它存储字符串是采用的Unicode码,编码方式是使用UTF-16来进行编码的,也就是一个字符(两个字节),一个中文汉字一般情况下是两个字节。 1.1 隐式共享 QString类采用了隐式共享的机制,那什么是隐式共享呢? 隐式共享:就是最大化资源的有效利用和最小化复制克隆操作。它是一种对象的管理方法(由隐式共享类所创建的 阅读详情

相关推荐

QString详解

QString是Qt编程中常用的类,除了用作数字量的输入输出之外,QString还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能。QString存储字符串采用的是Unicode码,每一个字符是一个16位的QChar,而不是8位的char,所以Qstring处理中文字符没有问题,而且一个汉字算作是一个字符。

QtCompany的博客 2741

Qt扫盲-QString使用总结

QString 是Qt 的一种基础数据类型,也是对字符串的一个封装。其实他的操作和标准库的std::string字符串的基本是一致的。但是还是有些区别。QString 存储以数据长度为16位2字节 QChar类型的字符串,也是说每个字符类型是 QChar ,其中每个 QChar 对应于一个UTF-16代码。

洪源兄 9979

学习QT之QString详解

学习QT之QString详解 QString类保存16位Unicode值,提供了丰富的操作、查询和转换函数。该类还进行了使用隐式共享、高效的内存分配策略等多方面的优化。 一、字符串常用操作 字符串的操作: 函数 说明 str.append(“xxx”) 在一个字符串的末尾追加另一个字符串 str.sprintf("%s",“HelloWorld”) 给字符串赋值为HelloW...

贝勒里恩的博客 5951

[QT_023]Qt学习之QString详解

Qt学习之QString详解

kongcheng253的博客 9001

Verilog-asm小练习—PLL建模

Verilog- ams是Verilog标准的模拟混合信号语言,以下是对PLL建模的一种思路参考

weixin_44700185的博客 1016

XDS110 USB Debug Probe连接错误-260:CCS Theia环境下的诊断与修复指南

本文详细解析了CCS Theia环境下XDS110 USB Debug Probe连接错误-260的诊断与修复方法。从硬件连接到驱动状态、固件更新到软件配置,提供了全面的排查指南,帮助开发者快速解决这一常见的调试器通信障碍问题,确保嵌入式开发工作流畅进行。

hope8的博客 282

QT中QString类型的输出

QT中QString类型的输出 QString类型要输出的话,可以先转换成标准的string类型,然后在输出: qstr.cpp #include <iostream> #include <string> #include <QString> #include <stdio.h> using namespace std; int main() {...

Keeplearning 8187

Bresenham画圆算法在嵌入式屏幕(如ILI9806G)上的实战:从C代码到单片机显示

本文详细介绍了Bresenham画圆算法在嵌入式屏幕(如ILI9806G)上的高效实现与优化方法。通过整数化改造和针对STM32等微控制器的特殊优化,显著提升了图形显示性能,适用于资源受限的嵌入式系统开发。文章还分享了实心圆与空心圆的实现策略及实战经验。

weixin_33712987的博客 390

【QT】QT中将float数转换为QString类型

【代码】【QT】QT中将float数转换为QString类型。

qq_43331089的博客 2793

数字锁相环的原理与FPGA实现

数字锁相环是锁相环电路的全数字实现。锁相环电路能够实现对输入信号的相位进行跟踪,进而在噪声中提取纯净的有用信号。以上就是今天要讲的内容,本文简单地介绍了锁相环的原理,然后,在Vivado仿真平台上,通过verilog做仿真验证。最终仿真结果能够实现锁定,但锁定时间较长,表明参数仍可做调整。

weixin_45857378的博客 8510

手把手教你用Microsoft AEC Challenge数据集训练自己的回声消除模型(附完整代码)

本文详细介绍了如何使用Microsoft AEC Challenge数据集训练专业的回声消除模型,包括环境准备、数据清洗、模型架构设计、训练流程和实际部署注意事项。通过完整的代码示例和实战指南,帮助开发者快速掌握AEC技术,提升语音通信系统的回声消除效果。

weixin_27697385的博客 456

Qt 中Qstring 类型的转换

Qt中 QString 和int, char等的“相互”转换 标签: qtfloathexstring 2012-02-27 12:52 72446人阅读 评论(12) 收藏 举报  分类: C++(22)  版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 网上找了半天,全是QString转i

Olivaf的博客 1154

Android 导出aar 用于Unity 百度语音唤醒

AndroidStudio版本下载地址Android Studio Arctic Fox Unity版本2021.3.26f1c1 新建AndroidStudio工程 新建module 这里注意一下,网上很多教程说要注意包名要和unity一样,但是测试下来,不一样也可以的 在新建的module里添加这两个jar包,并点击右键add as library 导入jniLibs 右键创建这几个package 代码就安装这个大佬的写参考代码 需要注意的的是在WakeupListener脚本里U

weixin_38777563的博客 633

在Qt中使用switch case语句抓取QString类型

在Qt中使用switch case语句抓取QString类型 在编写Qt程序时,发现switch case 无法直接抓取QString类型进行比较。 在网络上总结了两种方法: 参考:https://blog.youkuaiyun.com/qq_39404112/article/details/105384517 1.使用了QStringList进行操作 使用QStringList 插入List的顺序对应case语句的0,1,…… QStringList stringList; stringList << "

liuyu的博客 6682

手把手教你学Simulink--FIR滤波器的设计与优化仿真

FIR滤波器的设计目标通常包括指定的频率响应特性(如低通、高通、带通或带阻),以及特定的应用需求(如线性相位、最小化误差等)。Simulink提供了一个直观且强大的平台来模拟这些设计,并允许用户通过调整参数实时观察其对系统性能的影响。明确你的系统需求,比如输入信号类型(如正弦波组合)、采样率、FIR滤波器的设计参数(如滤波器类型、阶数、截止频率等)。假设我们需要设计一个低通FIR滤波器,用来去除高于1kHz的所有频率成分,保留低于1kHz的信号成分。采样率为8kHz。

MHD0815的博客 346

RK3588 平台部署实战:OpenCV + LibTorch + FFmpeg 环境搭建与深度学习推理全流程解析

现在,你已经掌握了在RK3588上搭建OpenCV+LibTorch+FFmpeg环境的完整流程,也完成了深度学习模型的部署测试。不妨从一个具体的应用场景入手(如检测自家宠物的品种),亲手打造属于你的第一个边缘智能应用——当你看到模型在RK3588上精准输出结果时,你会发现:嵌入式深度学习的门槛,其实并没有想象中那么高。这些依赖是编译OpenCV、FFmpeg的基础,安装过程中若提示权限不足,可在命令前加。若能输出预测的类别索引,则说明环境搭建成功,模型推理流程通畅。文件,实现模型加载、图像预处理与推理。

FJN110的博客 535

qt中实现了将float类型的数转换为QString类型

参考博客:https://blog.youkuaiyun.com/qq_34510308/article/details/78957562 在使用Qt Creator编程时,难免会用到将float类型转换为QString类型的时候下面是我所有的方法: 1. 将QString类型转化为float类型,很简单 QString data; float num = data.toFloat(); 即可很轻松...

Littlehero_121的博客 1406

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

quint32转化为qstring_QT中字符串QString类型的转换

把QString转换为 double类型方法1.QString str="123.45";double val=str.toDouble(); //val=123.45方法2.很适合科学计数法形式转换bool ok;double d;d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.把QString转换为float形1....

weixin_30679649的博客 2171

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

QT QString到各个类型之间的转换

1.QString转int 2.QString转string 3.QString装char* 4.QString转QDateTime 5.QString转16进制 保留几位

CB_coco的博客 1016

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Qt】QString 与 const char* 类型的转换

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

weixin_41838721的博客 1159

Qt之QString类型转char类型

     在Qt使用中,很多情况下我们得到的对象类型是QString类型,但是我们实际应用中需要操作的是char类型,因此需要一种在转换方式。在这里贴出一种Qt4中的转换代码,仅供参考:方法一: const char *ch; QString str = tcpSocket-&gt;readAll(); qDebug()&lt;&lt;"接收数据为:"&lt;&lt;str; ...

咖啡的博客 2195

Qt中实现将float类型转换为QString类型

在使用Qt Creator编程时,难免会用到将float类型转换为QString类型的时候下面是我所有的方法:1. 将QString类型转化为float类型,很简单QString data;float num = data.toFloat();即可很轻松的实现。2. 但是如何将float类型转化为QString类型呢?查看API很难发现封装好的转化函数可以尝试使用下面的代码转化:f...

weixin_30820077的博客 225

QT开发中QString是怎么转char*类型的

本文详细介绍了在Qt中将QString转换为char*的完整方案和注意事项。核心方法是通过QByteArray中转,推荐使用toUtf8()编码以支持中文,并强调必须分步操作避免临时对象销毁导致的指针悬空问题。文章对比了UTF-8、Latin1等不同编码的适用场景,提供了处理中文乱码的解决方案,包括使用QTextCodec设置全局编码。对于需要可修改char数组的情况,给出了动态分配内存和固定大小数组两种实现方式。最后总结了常见问题排查表,并列出了不同转换方法的优缺点,建议优先使用toUtf8()分步操作,

学无止尽,谨言慎行! 1940

Qt中QString与int和double类型的转换

在写Qt程序的时候

mangoer_ys 2026

Qt中QString类型与标准c++数据类型的转换

在编写Qt程序的时候,会发现QString类型的使用率是极高的,但是它和c++标准类型之间并没有完美兼容,好在Qt为我们提供了很多方法来进行这些数据类型之间的转化。 1、首先是int 、float、 long 、double等转化为QString类型: long a = 15; QString s = QString::number(a, 10); // s ==

Horizonhui 2025

QT中 QString 和int char等类型转换

Qt中 int ,float ,double转换为QString 有两种方法 1.使用 QString::number(); 如: long a = 63; QString s = QString::number(a, 10); // s == "63" QString t = QString::number(a, 16).toUpper(); // t ...

rong11417的博客 545
上一篇: Qt中常见的宏
下一篇: Qt的控件--QLineEdit
Simple_core
博客等级 码龄6年 929粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值