QT中各数据基础类型互转方式有哪些?

embedded/2024/9/24 2:31:34/

在Qt中,各数据基础类型之间的互转是一个常见的需求,以便在程序的不同部分合理地存储、调用和显示数据。以下是一些常见的Qt数据基础类型互转方式:

1. 数值类型与QString的互转

数值类型转QString
  • 使用QString::number()函数。这个函数可以将intfloatdouble等数值类型转换为QString。例如:

    int a = 123;
    QString str = QString::number(a); // str = "123"float b = 123.456f;
    QString strFloat = QString::number(b, char">'f', 2); // strFloat = "123.46",保留两位小数
    
  • 对于quint8等无符号类型,同样可以使用QString::number()进行转换。

QString转数值类型
  • 使用QStringtoInt()toFloat()toDouble()等函数。这些函数可以将QString转换为对应的数值类型,并可以指定转换的进制(默认为10进制)。例如:

    QString str = string">"123";
    bool ok;
    int num = str.toInt(&ok); // num = 123, ok = trueQString strFloat = string">"123.45";
    float fNum = strFloat.toFloat(&ok); // fNum = 123.45, ok = true
    

char_32">2. QString与char*的互转

char_34">QString转char*
  • 使用QByteArray作为中间类型。首先,将QString转换为QByteArray(通常使用toUtf8()toLatin1()toLocal8Bit()),然后获取QByteArraydata()指针,该指针即为char*类型。但需要注意,这个指针指向的内存区域在QByteArray的生命周期内有效,一旦QByteArray被销毁,该指针将不再有效。

    QString str = string">"hello";
    QByteArray byteArray = str.toUtf8();
    char* ch = byteArray.data(); // 使用完毕后,不要直接delete ch
    
  • 或者,先将QString转换为std::string,然后使用c_str()获取const char*

charQString_46">char*转QString
  • 直接使用QString的构造函数。如果char*字符串是以UTF-8编码的,可以使用QString(const char*)构造函数;如果是其他编码,可能需要先转换为UTF-8或使用QString::fromUtf8()等函数。

    char* ch = string">"hello";
    QString str(ch); // 假设ch是以UTF-8编码的
    // 或者
    QString strUtf8 = QString::fromUtf8(ch);
    

3. 其他类型转换

  • QByteArray与char*互转:与QString类似,可以使用QByteArraydata()方法获取char*,或者将char*作为参数直接构造QByteArray对象。
  • QString与std::string互转:使用QStringtoStdString()方法将QString转换为std::string,使用QString::fromStdString()std::string转换为QString
  • 数值类型之间的互转:通常可以直接使用C++的静态类型转换(如static_cast)或C风格的强制类型转换(如(int)floatVar),但需要注意数据类型之间的兼容性和精度损失问题。

以上是一些常见的Qt数据基础类型互转方式。在实际开发中,应根据具体需求和数据类型选择合适的转换方法。


http://www.ppmy.cn/embedded/115855.html

相关文章

机器学习(西瓜书)第 10 章 降维与度量学习

10.1 k近邻学习kNN k 近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个 “邻居”的信息来进行预测.通常,在…

C++入门基础知识八

1.介绍new与delete 1.malloc和free是函数,new和delete是操作符 2.malloc申请的空间不会初始化,new可以初始化 3.malloc申请空间失败时,返回的是NULL,因此必须判空,new不需要,但是new需要捕获异常 4.申请…

使用豆包Marscode 创建了一个”天气预报“小应用

以下是「豆包MarsCode 体验官」优秀文章,作者一拳干爆显示器。 前言 本文介绍了我第一次使用我在MarsCode IDE制作了一款天气预报的应用 其中在正文的头部以及结语部分发表了我在MarsCode编程中的体验情况,而正文的中间主要是我项目制作的细节步骤 豆…

C语言从头学62——学习头文件stdlib.h(一)

stdlib.h是一个非常重要的头文件,其中定义了使用频率很高的宏、函数等。 一、数据类型 size_t:运算符sizeof的返回值类型 wchar_t:宽字符类型 二、宏 NULL:空指针(用于声明后但未使用的指针的赋初…

嘉宾云集旌城 只为大赛而来 2024ISGC国际烈酒(中国)大奖赛在德阳落下帷幕

秋高气爽、古蜀之源,迎来第六届国际烈酒(中国)大奖赛;五谷丰登、重装之都,齐聚百名国际烈酒大奖赛评委。 9月18日,由德阳市人民政府、国家葡萄酒及白酒露酒产品质量检验检测中心、上海合作组织多功能经贸平…

7、论文阅读:20 年来的物体检测:一个调查

目标检测综述论文:Object Detection in 20 Years: A Survey 前言引言20年来的目标检测目标检测路线图里程碑A Survey) 前言 本文从技术演变的角度广泛回顾了这个快速发展的研究领域(1990s - 2022s)。本文涵盖了许多主题,包括历史上的目标检测的里程碑、检测数据集、指标、…

字母与符号检测系统源码分享

字母与符号检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

IPsec-VPN中文解释

一 IPsec-VPN 实操 (点到点) 网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 //配置IP地址 [FW1000-A]interface GigabitEthernet 1/0/2 [FW10…