QT QString类用法总结

介绍

QString存储16位QChar的字符串,其中每个QChar对应一个UTF-16代码单元。(码值大于65535的Unicode字符使用代理对存储,即两个连续的qchar。)

Unicode是一种国际标准,支持当今使用的大多数书写系统。它是US-ASCII (ANSI X3.4-1986)和Latin-1 (ISO 8859-1)的超集,所有US-ASCII/Latin-1字符在相同的代码位置可用。在幕后,QString使用隐式共享(写时复制)来减少内存使用并避免不必要的数据复制。这也有助于减少存储16位字符而不是8位字符的固有开销。

除了QString, Qt还提供了QByteArray类来存储原始字节和传统的以'\0'结尾的8位字符串。对于大多数目的,QString是您想要使用的类。它在整个Qt API中都被使用,并且Unicode支持可以确保您的应用程序易于翻译,如果您想在某个时候扩展应用程序的市场。QByteArray适用的两种主要情况是:需要存储原始二进制数据时,以及内存保护至关重要时(如在嵌入式系统中)。

QString初始化

常用API
// 构造一个空字符串对象
QString::QString();
// 将 char* 字符串 转换为 QString 类型
QString::QString(const char *str);
// 将 QByteArray 转换为 QString 类型
QString::QString(const QByteArray &ba);
//构造一个给定大小的字符串,每个字符都设置为ch。
QString::QString(qsizetype size, QChar ch)
例:
void Widget::init()
{
    //直接赋值
    QString string="helloworld";//直接赋值一个字符串给他
    qDebug() << string;  //打印输出helloworld

    //调用拷贝构造函数
    QString string2(string);
    qDebug() << string2;   //打印输出helloworld


    //索引赋值
    QString string3;
    string3.resize(5);
    char a[6]="hello";
    for(int i=0;i<5;i++)
    {
        string3[i]=a[i];
    }
    //qDebug() << string3; //输出hello

    //单字符串初始化
    QString string4(static_cast<QChar>(0x08));
    

}

字符串拼接

void Widget::splicing()
{
    QString string1="hello";
    QString string2="world";

    //使用重载的+号
    QString string3=string1+string2;

    //使用append函数
    QString string4=string1.append(string2);

    //使用asprintf函数
    QString string5= QString::asprintf("%s,%s",string1.data(),string2.data());

    //使用arg函数
    QString string6=QString("%1%2").arg(string1).arg(string2);

    //上述结果均输出helloworld
}

插入数据

常用API
// 插入数据, 将 str 插入到字符串第 position 个字符的位置(从0开始)
// 其他重载的同名函数可参考Qt帮助文档, 此处略
QString &QString::insert(int position, const QString &str);
QString &QString::insert(int position, const char *str);
QString &QString::insert(int position, const QByteArray &str);
void Widget::inserttest()
{
        QString str = "helloworld";

        //3.1.insert 字符串
        str.insert(0,"123");
        qDebug()<<str;

        //3.2 insert 插入字符
        str = "helloworld";
        str.insert(1,'a');
        qDebug()<<str;
        /*输出为"123helloworld"
                "haelloworld"*/

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值