10-Qt6 QStringView

导读:本篇文章讲解 10-Qt6 QStringView,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

QStringView类是QString API的只读子集,还提供有关UTF-16字符串的统一视图。

https://doc.qt.io/qt-6/qstringview.html

从Qt5.10开始提供,它的优势就是因为是只读没有深度复制等所以快,看以下范例即可:

#include <QCoreApplication>

void readname(QString &name) //address of is access of
{
    name.insert(0,"Mr.");
    qInfo() << "Changed" << name;
}

void readonly(QStringView name)
{
    qInfo() << "name" << name.data() << name;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QString firstname = "Bryan";
    QString lastname = "Cairns";

    //--- Copy and modification issues
    //readname(firstname);
    qInfo() << "Original" << firstname;

    //---Read only, no copy
    qInfo() << "name" << firstname.data() << firstname;
    readonly(firstname);

    //--- Basic parsing

    QString fullname = firstname + " " + lastname;

    foreach(QStringView part, QStringView(fullname).split(QChar(' ')))
    {
        qInfo() << "part" << part;
        //Data types can get a bit annoying
        if(part.startsWith(QStringView(firstname),Qt::CaseInsensitive))
        {
            qInfo() << "~First name detected~";
            readonly(QStringView(firstname).mid(1,3));
        }
    }

    return a.exec();
}

额外介绍下 foreach

在C++中并没有foreach关键字。QT自己增加了这一个关键字,就像slots和signals、emit等一样。可以理解为for的高级版。

在C#、Java等语言中,可以直接使用foreach,为语言自带关键字,用法相似。

foreach (varItem , Items) 

varItem(variable)是容器Items(container)中的一个项,相当于:variable=container.item 。遍历会从头遍历到尾。

QStringList slt = {"abc", "def", "ghi"};
foreach(QString s , slt )
{
    cout<<s<<endl;
}
// 输出结果为:
abc
def
ghi

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96482.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!