summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/text/qstring.cpp20
-rw-r--r--src/corelib/text/qstring.h1
-rw-r--r--tests/auto/corelib/text/qstring/tst_qstring.cpp2
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)>(); }