Qt学习笔记之 字符串类型小结

一世执手 提交于 2020-02-02 01:12:25

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)

 

参考资料:

1. https://www.cnblogs.com/retry/p/9328748.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!