积累:Qt 多种数据类型之间的转换方法


前言


开发时经常涉及到数据类型的转换,为方便温故知新、提升开发效率,现将 Qt 开发部分常用的数据类型转换方式形成工具文档供查询、参考。


1. int 转 QString


1)函数:QString::number

2)函数原型

	//将数字(整数、浮点数、有符号、无符号等)转换为QString类型//根据指定的基数返回与数字n等价的字符串。基数默认为10,取值范围必须在2到36之间。对于非10的基数,n被视为无符号整数。static QString number(int n, int base=10);static QString number(uint n, int base=10);static QString number(long n, int base=10);static QString number(ulong n, int base=10);static QString number(qlonglong n, int base=10);static QString number(qulonglong n, int base=10);//返回数字n的等效字符串,根据指定的格式和精度进行格式化。有关详细信息,请参见参数格式。//与QLocale::toString()不同,此函数不遵循用户的语言环境设置。static QString number(double n, char f='g', int prec=6);


3)参数说明:
参数1:待转换数字
参数2:要转换的目标进制
参数3:如果参数2为浮点数为前提,参数3表示要保留小数位数

默认情况下是十进制显示方式转换,也可以使用八进制、十六进制显示方式调用。


4)使用示例:

//整型转换成字符串
int iNum = 100;
QString qstrNum = QString::number(iNum, 10);			// qstrNum == “100”//整型转换成16进制字符串类型
long lNum = 63;
QString sNum = QString::number(lNum , 16);             	// sNum == "3f"
QString tNum = QString::number(lNum , 16).toUpper();   	// tNum== "3F"//浮点类型转换成字符串并保留2位小数
float fNum=4.567;
QString sfNum = QString::number(fNum,‘f’, 2);			//sfNum  == "4.56"//整数转换为字符串,并保留3位,不足在前面补0,比如9转换成字符串009:
int iSrc = 9;
QString str1 = QString::number(iSrc).sprintf("%03d",iSrc);	//str1 == "009"
QString str2 = QString("%1").arg(iSrc, 3, 10, QChar('0'));	//str2 == "009"


2. QString 转 int


1)函数:QString::toInt

2)函数原型

//返回使用base基准转换为int型的字符串,默认值为10,必须介于2到36之间,或者0。如果转换失败,返回0。
int QString::toInt(bool *ok = nullptr, int base = 10) const


3)参数说明:
参数1:返回的执行结果,如果ok不是nullptr,则将ok设置为false表示失败,将ok设置为true表示成功。
参数2:要转换的目标进制。

参数2默认情况下是十进制显示方式转换,也可以使用八进制、十六进制显示方式调用。如果基数为0,则使用C语言惯例:如果字符串以"0x"开头,则使用基数16;如果字符串以“0”开头,则使用进制8;否则,默认以10为基准。

字符串转换将始终在’C’语言环境中进行。对于语言环境相关的转换,使用QLocale::toInt()。


4)使用示例:

 	QString number = "123";int inum = number.toInt();			//inum  == 123QString str = "FF";bool ok;int hex = str.toInt(&ok, 16);       // hex == 255, ok == trueint dec = str.toInt(&ok, 10);       // dec == 0, ok == false


3. std::string 转 QString


1)函数:QString::fromLocal8Bit

2)函数原型

//Returns a QString initialized with the first size characters of the 8-bit string str.
//If size is -1 (default), it is taken to be strlen(str).
QString QString::fromLocal8Bit(const char *str, int size = -1)


3)参数说明:
参数1:要转换的源数据。
参数2:要转换的长度,默认为-1表示全部转换。


4)使用示例:

	//全部转换std::string xhjName = "bcd";QString xhj = QString::fromLocal8Bit(xhjName.c_str());		//xhj == "bcd"//指定长度转换std::string xName = "123456";QString qsName = QString::fromLocal8Bit(xName.c_str(),3);	//qsName == "123"


4. QString 转 std::string


1)函数:QString::toStdString

2)函数原型

//Returns a std::string object with the data contained in this QString. 
//The Unicode data is converted into 8-bit characters using the toUtf8() function.
std::string QString::toStdString() const


3)参数说明:


4)使用示例:

	QString qsName = "123456";std::string str = qsName.toStdString();		//str == "123456"


5. QString 转 const char*


1)函数:QString::toStdString

2)函数原型

//Returns a std::string object with the data contained in this QString. 
//The Unicode data is converted into 8-bit characters using the toUtf8() function.
std::string QString::toStdString() const


3)参数说明:


4)使用示例:

    QString qsStr = "abc";const char* dst = qsStr.toLocal8Bit().data();std::string strarr1 = qsStr.toStdString();const char *arr0 = strarr1.c_str();				//arr0 == "abc"const char *arr1 = strarr1.data();				//arr1 == "abc"


6. QString 转 char*


1)函数:QString::toLatin1

2)函数原型

//Returns a Latin-1 representation of the string as a QByteArray.
//The returned byte array is undefined if the string contains non-Latin1 characters. Those characters may be suppressed or replaced with a question mark.
QByteArray QString::toLatin1() const


3)参数说明:


4)使用示例:

	QString qsStr = "abc";QByteArray ba = qsStr.toLatin1();char *arr3 = ba.data();             //arr3 == "abc"


7. QString 转 ASCII 码


1)函数:QString::toLatin1

2)函数原型

//Returns a Latin-1 representation of the string as a QByteArray.
//The returned byte array is undefined if the string contains non-Latin1 characters. Those characters may be suppressed or replaced with a question mark.
QByteArray QString::toLatin1() const


3)参数说明:


4)使用示例:

	QString str = "abc";QByteArray array = str .toLatin1();for (int i = 0; i < array.size(); ++i){int ich= (int)array.at(i);                   // ich == 97 98 99}


8. ASCII 转 QString


示例

	//int转对应ASCII的字符串,如转65为A字符串QString str = (QChar)(65);		//str == "A"//ASCII 数值 97 98 99 转成 a b cQByteArray array;array.append(97);array.append(98);array.append(99);for (int i = 0; i < array.size(); ++i){QString dst = QChar(array.at(i));		// 'a' 'b' 'c'}

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

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

相关文章

LD: 利用Plink软件进行连锁不平衡计算和绘图

输入文件详解 PLINK主要使用以下三种文件格式: .ped文件:文本文件,列出所有样本的基因型数据。每行代表一个样本,包含个体和家系信息,以及其对应的基因型数据。.map文件:文本文件,与.ped文件配合使用,列出了基因型数据中所有SNP的位置信息。每行代表一个SNP,包含染色…

Python:练习:输出int值a占b的百分之几。例如:输入1和4,输出:25%。

案例&#xff1a; 输出int值a占b的百分之几。例如&#xff1a;输入1和4&#xff0c;输出&#xff1a;25%。 思考&#xff1a; 所有的一步步思考&#xff0c;最后综合起来。 首先&#xff0c;确定 输出&#xff0c;那么就用input&#xff0c;而且是int值&#xff0c;所以肯定…

springboot2.6.5 下配置ForkJoinPool线程池大小

从java1.7开始&#xff0c;引入了parallelStream的方式使用ForkJoinPool多线程处理数据的方式&#xff0c;ForkJoinPool默认线程池大小是cpu内核数-1&#xff0c;并且可以通过以下方式配置线程池大小&#xff1a; System.setProperty("java.util.concurrent.ForkJoinPool…

C++设计模式_创建型模式_工厂方法模式

目录 C设计模式_创建型模式_工厂方法模式 一、简单工厂模式 1.1 简单工厂模式引入 1.2 简单工厂模式 1.3 简单工厂模式利弊分析 1.4 简单工厂模式的UML图 二、工厂方法模式 2.1 工厂模式和简单工厂模式比较 2.2 工厂模式代码实现 2.3 工厂模式UML 三、抽象工厂模式 3.1 战斗场景…

MDS300-16-ASEMI整流模块MDS300-16参数、封装、尺寸

编辑&#xff1a;ll MDS300-16-ASEMI整流模块MDS300-16参数、封装、尺寸 型号&#xff1a;MDS300-16 品牌&#xff1a;ASEMI 封装&#xff1a;M25 最大重复峰值反向电压&#xff1a;1600V 最大正向平均整流电流(Vdss)&#xff1a;300A 功率(Pd)&#xff1a;大功率 芯片…

centos 安装 glibc2.25

在 CentOS 7 系统上安装 glibc 2.25 需要非常谨慎&#xff0c;因为 glibc 是系统核心库之一&#xff0c;升级它可能导致与系统其他组件的兼容性问题。CentOS 7 自带的 glibc 版本较低&#xff0c;直接替换为高版本可能会导致依赖于旧版 glibc 的系统软件崩溃。 以下是一般情况…

Flink——芒果TV的实时数仓建设实践

目录 一、芒果TV实时数仓建设历程 1.1 阶段一&#xff1a;Storm/Flink JavaSpark SQL 1.2 阶段二&#xff1a;Flink SQLSpark SQL 1.3 阶段三&#xff1a;Flink SQLStarRocks 二、自研Flink实时计算调度平台介绍 2.1 现有痛点 2.2 平台架构设计 三、Flink SQL实时数仓分…

面试笔记系列三之spring基础知识点整理及常见面试题

目录 如何实现一个IOC容器? 说说你对Spring 的理解&#xff1f; 你觉得Spring的核心是什么&#xff1f; 说一下使用spring的优势&#xff1f; Spring是如何简化开发的&#xff1f; IOC 运行时序 prepareRefresh() 初始化上下文环境 obtainFreshBeanFactory() 创建并…

Linux系统加固:如何有效管理系统账号

Linux系统加固&#xff1a;如何有效管理系统账号 1.1 口令重复次数限制1.2 避免系统存在uid相同的账号1.3 空密码的帐户1.4 口令复杂度1.5 口令生存期1.6 登录失败次数锁定策略 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Linux系统中…

为什么软考报名人数越来越多?

2020年软考报名人数404666人&#xff0c;广东省报考人数超过14万人。 ●2021年软考通信考试报名人数突破100万人&#xff0c;估计软考有90多万。 ●2022年软考通信考试共129万人&#xff0c;估计软考占了120多万人。 ●2023年软考具体报名人数没有公布&#xff0c;但工业和信…

【AI+应用】aliyun的EMO图生视频模型引起的思考如何做AI数字人

昨天2 月 29 日消息&#xff0c;2 月 28 日&#xff0c;阿里巴巴集团智能计算研究院日前上线了一款新的 AI 图片 - 音频 - 视频模型技术 EMO&#xff0c;官方称其为 " 一种富有表现力的音频驱动的肖像视频生成框架 "。据悉&#xff0c;用户只需要提供一张照片和一段任…

springboot235基于SpringBoot的房屋交易平台的设计与实现

房屋交易平台设计与实现 摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互…

死记硬背spring bean 的生命周期

1.bean的生命周期 我们平常经常使用类似于new Object()的方式去创建对象&#xff0c;在这个对象没有任何引用的时候&#xff0c;会被gc给回收掉。而对于spring而言&#xff0c;它本身存在一个Ioc容器&#xff0c;就是用来管理对象的&#xff0c;而对象的生命周期也完全由这个容…

Spring之AOP入门

1.AOP介绍 AOP&#xff08;Aspect Oriented Programming&#xff09;面向切面编程&#xff0c;一种编程范式&#xff0c;指导开发者如何组织程序结构&#xff0c;作用是在不改动原始设计的基础上为其进行功能增强 2.AOP的核心概念 概念定义SpringAOP&#xff08;注解开发&am…

性能测试-反编译jar

方法一&#xff0c;使用jd-gui 1、官网下载&#xff1a;Java Decompiler 2、下载mac版本后&#xff0c;解压&#xff0c;如下所示&#xff1a; 双击 JD_GUI&#xff0c;提示错误&#xff0c;如下所示&#xff1a; 已经安装了java 17&#xff0c;是java 1.8以上版本&#xff0…

Unity中URP下实现水体(水面高光)

文章目录 前言一、实现高光反射原理1、原理&#xff1a;2、公式&#xff1a; 二、实现1、定义 _SpecularColor 作为高光反射的颜色2、定义 _SpecularIntensity 作为反射系数&#xff0c;控制高光反射的强度3、定义 _Smoothness 作为高光指数&#xff0c;用于模型高光范围4、模拟…

ADO.NET+kafka实现发布订阅保存到数据库

​​​​​​ADO.NETkafka实现发布订阅保存到数据库 在.NET应用程序中&#xff0c;ADO.NET通常用于数据库操作&#xff0c;而Apache Kafka是一个分布式流处理平台&#xff0c;它允许发布&#xff08;Producer&#xff09;和订阅&#xff08;Consumer&#xff09;消息流。使用A…

深入理解c指针(四)

目录 六、assert断言 七、指针的使用和传址调用 1、strlen的模拟实现 2、传值调用和传址调用 3、练习-字符串逆序 在深入理解c指针&#xff08;三&#xff09;提到&#xff0c;在实际使用指针前可以检测其是否指到有效空间&#xff1a; #include<stdio.h> int mai…

度量与评估客户体验:以客户为中心的方法和工具

在当今的市场环境中&#xff0c;客户体验已经成为企业成功的关键因素。一个优秀的客户体验不仅能够提升客户满意度&#xff0c;增强客户忠诚度&#xff0c;还能够吸引新的潜在客户。然而&#xff0c;要实现这一目标&#xff0c;企业首先需要了解如何度量和评估客户体验。本文将…

day08_分类品牌管理商品规格管理商品管理

文章目录 1 分类品牌管理1.1 菜单添加1.2 表结构介绍1.3 页面制作1.4 品牌列表加载1.4.1 后端接口BrandControllerBrandServiceBrandMapperBrandMapper.xml 1.4.2 前端对接brand.jscategoryBrand.vue 1.5 分类数据加载1.6 列表查询1.6.1 需求说明1.6.2 后端接口需求分析Categor…