1. Qt常用字符串类型
1.1 QString
QString是Unicode编码的字符串,存储一系列16位的QChar,每一个QChar对应一个Unicode 4.0编码的字符,详见《Qt学习笔记之QString》。
1.2 QByteArray
QByteArray是个字节数组,可以存储原始字节(包括一系列'\0')和传统的8位'\0'结尾的字符串,每一个字节存储为char类型的数据;
虽然QString用得更普遍和方便,但当需要存储原始的二进制数据或者内存保护要求严格时,用QByteArray比用QString更合适,详见《Qt学习笔记之QByteArry》。
1.3 QChar
QChar存储一个16位(2个字节)的Unicode字符,数据的存储类型为ushort(unsigned short),详见《Qt学习笔记之QChar》。
1.4 QLatin1Char
QLatin1Char是个结构体,存储一个8位ASCII/Latin-1编码的字符,数据的存储类型为char,详见《Qt学习笔记之QLatin1Char》。
2. Qt字符串类型见转换
2.1 QByteArray、char *与QString互转
QByteArray与QString互转极为简单,二者从本质上类似,都是连续存储,区别是前者可以存无法显示的字符,后者只存可显示的字符。如QByteArray可以存0x00-0x19,而QString则存储如0x30等可显示字符(0x20-0x7E)
QString 转 char ,需要用到 QByteArray 类, 因为 char 最后都有一个'\0'作为结束符,而采用 QString::toLatin1() 时会在字符串后面加上'\0'。
#include <QCoreApplication>
#include <QChar>
#include <QString>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//! QString 定义
QString str = "hello world";
//! QString 转 QByteArray
QByteArray ba;
ba = str.toLatin1();
qDebug("%s",ba.data());
//! QByteArray转char *
char *ch = ba.data();
qDebug("%s",ch);
//! char*转QByteArray
QByteArray ba1(ch);
//! char*转QString
QString str1(ch);//或str=ch或str=QLatin1String(ch)
//! QByteArray转QString
QString str2(ba1);
return a.exec();
}
2.2 QString 与 QChar
#include <QCoreApplication>
#include <QChar>
#include <QString>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//! QString转QChar
QString str = "hellow";
QChar *ch = new QChar[10];
ch = str.data();
for (int i = 0; i < 10; i++)
qDebug()<<ch[i];
//! QChar转Qstring
static const QChar data[4] = { 'h', 'e', 'l', 'l' };
QString str1(data, 4);
qDebug("%s",str1.toLatin1().data());
QString str2;
str2.resize(4);
str2[0] = QChar('h');
str2[1] = QChar('e');
str2[2] = QChar('l');
str2[3] = QChar('l');
qDebug("%s",str2.toLatin1().data());
return a.exec();
}
2.3 QChar与 char
//qchar - char
// char Qchar::toLatin1() 或者 char Qchar::toAscii() const
char ch;
qchar qch;
ch = qch.toLatin1;
//char -> qchar
qchar(char ch)
qchar (uchar ch)
参考资料:
来源:CSDN
作者:浩瀚之水_csdn
链接:https://blog.csdn.net/a8039974/article/details/104126147