前言
開發時經常涉及到數據類型的轉換,為方便溫故知新、提升開發效率,現將 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'}