diff options
-rw-r--r-- | src/corelib/text/qstring.cpp | 20 | ||||
-rw-r--r-- | src/corelib/text/qstring.h | 1 | ||||
-rw-r--r-- | tests/auto/corelib/text/qstring/tst_qstring.cpp | 2 |
3 files changed, 22 insertions, 1 deletions
diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp index 326435f28f..f7ddb5fc8e 100644 --- a/src/corelib/text/qstring.cpp +++ b/src/corelib/text/qstring.cpp @@ -3001,7 +3001,7 @@ QString &QString::operator=(QChar ch) \fn QString &QString::insert(qsizetype position, QLatin1StringView str) \overload insert() - Inserts the Latin-1 string \a str at the given index \a position. + Inserts the Latin-1 string view \a str at the given index \a position. \include qstring.cpp string-grow-at-insertion */ @@ -3027,6 +3027,24 @@ QString &QString::insert(qsizetype i, QLatin1StringView str) } /*! + \fn QString &QString::insert(qsizetype position, QUtf8StringView str) + \overload insert() + \since 6.5 + + Inserts the UTF-8 string view \a str at the given index \a position. + + \note Inserting variable-width UTF-8-encoded string data is conceptually slower + than inserting fixed-width string data such as UTF-16 (QStringView) or Latin-1 + (QLatin1StringView) and should thus be used sparingly. + + \include qstring.cpp string-grow-at-insertion +*/ +QString &QString::insert(qsizetype i, QUtf8StringView s) +{ + return insert(i, s.toString()); // ### optimize (QTBUG-108546) +} + +/*! \fn QString& QString::insert(qsizetype position, const QChar *unicode, qsizetype size) \overload insert() diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h index 16ab13e1e9..a6cc1cf867 100644 --- a/src/corelib/text/qstring.h +++ b/src/corelib/text/qstring.h @@ -687,6 +687,7 @@ public: inline QString &insert(qsizetype i, const QString &s) { return insert(i, s.constData(), s.size()); } inline QString &insert(qsizetype i, QStringView v) { return insert(i, v.data(), v.size()); } QString &insert(qsizetype i, QLatin1StringView s); + QString &insert(qsizetype i, QUtf8StringView s); QString &append(QChar c); QString &append(const QChar *uc, qsizetype len); diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp index 0c266a7da8..037c3043e2 100644 --- a/tests/auto/corelib/text/qstring/tst_qstring.cpp +++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp @@ -463,6 +463,8 @@ private slots: void insert_qstringview_data() { insert_data(EmptyIsNoop); } void insert_qlatin1string() { insert_impl<QLatin1String, QString &(QString::*)(qsizetype, QLatin1String)>(); } void insert_qlatin1string_data() { insert_data({EmptyIsNoop, Latin1Encoded}); } + void insert_qutf8stringview() { insert_impl<QUtf8StringView, QString &(QString::*)(qsizetype, QUtf8StringView)>(); } + void insert_qutf8stringview_data() { insert_data(EmptyIsNoop); } void insert_qcharstar_int() { insert_impl<QPair<const QChar *, int>, QString &(QString::*)(qsizetype, const QChar*, qsizetype) >(); } void insert_qcharstar_int_data() { insert_data(EmptyIsNoop); } void insert_qchar() { insert_impl<Reversed<QChar>, QString &(QString::*)(qsizetype, QChar)>(); } |