積累: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.pswp.cn/news/711350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711350.shtml
英文地址,請注明出處:http://en.pswp.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…