From 189e40e11e51d0cba9232b960f495920985428b8 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 19 Jul 2018 16:20:42 +0200 Subject: [PATCH] Add QTextStream operators for QStringView Change-Id: I72d597fa21521a04b7f7c0e41bd45ee9dabb6222 Reviewed-by: Thiago Macieira --- src/corelib/serialization/qtextstream.cpp | 15 +++++++++++++++ src/corelib/serialization/qtextstream.h | 1 + .../serialization/qtextstream/tst_qtextstream.cpp | 12 ++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/corelib/serialization/qtextstream.cpp b/src/corelib/serialization/qtextstream.cpp index ee3cb4efcb..05a5a55926 100644 --- a/src/corelib/serialization/qtextstream.cpp +++ b/src/corelib/serialization/qtextstream.cpp @@ -2590,6 +2590,21 @@ QTextStream &QTextStream::operator<<(const QString &string) return *this; } +/*! + \overload + + Writes \a string to the stream, and returns a reference to the + QTextStream. + \since 5.12 +*/ +QTextStream &QTextStream::operator<<(QStringView string) +{ + Q_D(QTextStream); + CHECK_VALID_STREAM(*this); + d->putString(string.cbegin(), int(string.size())); + return *this; +} + /*! \overload diff --git a/src/corelib/serialization/qtextstream.h b/src/corelib/serialization/qtextstream.h index ee0b09419d..ee90d01779 100644 --- a/src/corelib/serialization/qtextstream.h +++ b/src/corelib/serialization/qtextstream.h @@ -184,6 +184,7 @@ public: QTextStream &operator<<(float f); QTextStream &operator<<(double f); QTextStream &operator<<(const QString &s); + QTextStream &operator<<(QStringView s); QTextStream &operator<<(QLatin1String s); QTextStream &operator<<(const QStringRef &s); QTextStream &operator<<(const QByteArray &array); diff --git a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp index df8746e518..edea4713a1 100644 --- a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp +++ b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp @@ -161,6 +161,7 @@ private slots: void string_write_operator_ToDevice(); void latin1String_write_operator_ToDevice(); void stringref_write_operator_ToDevice(); + void stringview_write_operator_ToDevice(); // other void skipWhiteSpace_data(); @@ -2573,6 +2574,17 @@ void tst_QTextStream::stringref_write_operator_ToDevice() QCOMPARE(buf.buffer().constData(), "No explicit lengthExplicit length"); } +void tst_QTextStream::stringview_write_operator_ToDevice() +{ + QBuffer buf; + buf.open(QBuffer::WriteOnly); + QTextStream stream(&buf); + const QStringView expected = QStringViewLiteral("expectedStringView"); + stream << expected; + stream.flush(); + QCOMPARE(buf.buffer().constData(), "expectedStringView"); +} + // ------------------------------------------------------------------------------ void tst_QTextStream::useCase1() {