2022-05-10 10:06:48 +00:00
|
|
|
// Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
|
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
#include "qstringview.h"
|
|
|
|
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\class QStringView
|
|
|
|
\inmodule QtCore
|
|
|
|
\since 5.10
|
2017-04-04 22:09:47 +00:00
|
|
|
\brief The QStringView class provides a unified view on UTF-16 strings with a read-only subset of the QString API.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
\reentrant
|
|
|
|
\ingroup tools
|
|
|
|
\ingroup string-processing
|
|
|
|
|
2017-04-04 22:09:47 +00:00
|
|
|
A QStringView references a contiguous portion of a UTF-16 string it does
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
not own. It acts as an interface type to all kinds of UTF-16 string,
|
|
|
|
without the need to construct a QString first.
|
|
|
|
|
|
|
|
The UTF-16 string may be represented as an array (or an array-compatible
|
|
|
|
data-structure such as QString,
|
2019-07-27 08:00:48 +00:00
|
|
|
std::basic_string, etc.) of QChar, \c ushort, \c char16_t or
|
|
|
|
(on platforms, such as Windows, where it is a 16-bit type) \c wchar_t.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
QStringView is designed as an interface type; its main use-case is
|
|
|
|
as a function parameter type. When QStringViews are used as automatic
|
|
|
|
variables or data members, care must be taken to ensure that the referenced
|
|
|
|
string data (for example, owned by a QString) outlives the QStringView on all code paths,
|
|
|
|
lest the string view ends up referencing deleted data.
|
|
|
|
|
|
|
|
When used as an interface type, QStringView allows a single function to accept
|
|
|
|
a wide variety of UTF-16 string data sources. One function accepting QStringView
|
2020-08-12 11:16:27 +00:00
|
|
|
thus replaces three function overloads (taking QString and
|
2022-08-11 12:10:03 +00:00
|
|
|
\c{(const QChar*, qsizetype)}), while at the same time enabling even more string data
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
sources to be passed to the function, such as \c{u"Hello World"}, a \c char16_t
|
|
|
|
string literal.
|
|
|
|
|
|
|
|
QStringViews should be passed by value, not by reference-to-const:
|
2020-05-29 10:01:26 +00:00
|
|
|
\snippet code/src_corelib_text_qstringview.cpp 0
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
If you want to give your users maximum freedom in what strings they can pass
|
|
|
|
to your function, accompany the QStringView overload with overloads for
|
|
|
|
|
|
|
|
\list
|
|
|
|
\li \e QChar: this overload can delegate to the QStringView version:
|
2020-05-29 10:01:26 +00:00
|
|
|
\snippet code/src_corelib_text_qstringview.cpp 1
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
even though, for technical reasons, QStringView cannot provide a
|
|
|
|
QChar constructor by itself.
|
|
|
|
\li \e QString: if you store an unmodified copy of the string and thus would
|
|
|
|
like to take advantage of QString's implicit sharing.
|
2022-03-09 20:26:01 +00:00
|
|
|
\li QLatin1StringView: if you can implement the function without converting the
|
|
|
|
QLatin1StringView to UTF-16 first; users expect a function overloaded on
|
|
|
|
QLatin1StringView to perform strictly less memory allocations than the
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
semantically equivalent call of the QStringView version, involving
|
2022-03-09 20:26:01 +00:00
|
|
|
construction of a QString from the QLatin1StringView.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
\endlist
|
|
|
|
|
|
|
|
QStringView can also be used as the return value of a function. If you call a
|
|
|
|
function returning QStringView, take extra care to not keep the QStringView
|
|
|
|
around longer than the function promises to keep the referenced string data alive.
|
|
|
|
If in doubt, obtain a strong reference to the data by calling toString() to convert
|
|
|
|
the QStringView into a QString.
|
|
|
|
|
2017-03-27 13:49:52 +00:00
|
|
|
QStringView is a \e{Literal Type}, but since it stores data as \c{char16_t}, iteration
|
|
|
|
is not \c constexpr (casts from \c{const char16_t*} to \c{const QChar*}, which is not
|
|
|
|
allowed in \c constexpr functions). You can use an indexed loop and/or utf16() in
|
|
|
|
\c constexpr contexts instead.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
2020-08-12 11:16:27 +00:00
|
|
|
\sa QString
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
*/
|
|
|
|
|
2018-01-04 10:23:37 +00:00
|
|
|
/*!
|
|
|
|
\typedef QStringView::storage_type
|
|
|
|
|
2019-07-27 08:00:48 +00:00
|
|
|
Alias for \c{char16_t}.
|
2018-01-04 10:23:37 +00:00
|
|
|
*/
|
|
|
|
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
/*!
|
|
|
|
\typedef QStringView::value_type
|
|
|
|
|
|
|
|
Alias for \c{const QChar}. Provided for compatibility with the STL.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::difference_type
|
|
|
|
|
|
|
|
Alias for \c{std::ptrdiff_t}. Provided for compatibility with the STL.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::size_type
|
|
|
|
|
2017-10-10 07:42:41 +00:00
|
|
|
Alias for qsizetype. Provided for compatibility with the STL.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::reference
|
|
|
|
|
|
|
|
Alias for \c{value_type &}. Provided for compatibility with the STL.
|
|
|
|
|
|
|
|
QStringView does not support mutable references, so this is the same
|
|
|
|
as const_reference.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::const_reference
|
|
|
|
|
|
|
|
Alias for \c{value_type &}. Provided for compatibility with the STL.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::pointer
|
|
|
|
|
|
|
|
Alias for \c{value_type *}. Provided for compatibility with the STL.
|
|
|
|
|
|
|
|
QStringView does not support mutable pointers, so this is the same
|
|
|
|
as const_pointer.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::const_pointer
|
|
|
|
|
|
|
|
Alias for \c{value_type *}. Provided for compatibility with the STL.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::iterator
|
|
|
|
|
|
|
|
This typedef provides an STL-style const iterator for QStringView.
|
|
|
|
|
|
|
|
QStringView does not support mutable iterators, so this is the same
|
|
|
|
as const_iterator.
|
|
|
|
|
|
|
|
\sa const_iterator, reverse_iterator
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::const_iterator
|
|
|
|
|
|
|
|
This typedef provides an STL-style const iterator for QStringView.
|
|
|
|
|
|
|
|
\sa iterator, const_reverse_iterator
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::reverse_iterator
|
|
|
|
|
|
|
|
This typedef provides an STL-style const reverse iterator for QStringView.
|
|
|
|
|
|
|
|
QStringView does not support mutable reverse iterators, so this is the
|
|
|
|
same as const_reverse_iterator.
|
|
|
|
|
|
|
|
\sa const_reverse_iterator, iterator
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\typedef QStringView::const_reverse_iterator
|
|
|
|
|
|
|
|
This typedef provides an STL-style const reverse iterator for QStringView.
|
|
|
|
|
|
|
|
\sa reverse_iterator, const_iterator
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::QStringView()
|
|
|
|
|
|
|
|
Constructs a null string view.
|
|
|
|
|
|
|
|
\sa isNull()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::QStringView(std::nullptr_t)
|
|
|
|
|
|
|
|
Constructs a null string view.
|
|
|
|
|
|
|
|
\sa isNull()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2023-11-29 16:41:53 +00:00
|
|
|
\fn template <typename Char, QStringView::if_compatible_char<Char> = true> QStringView::QStringView(const Char *str, qsizetype len)
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
Constructs a string view on \a str with length \a len.
|
|
|
|
|
|
|
|
The range \c{[str,len)} must remain valid for the lifetime of this string view object.
|
|
|
|
|
2019-02-15 20:21:20 +00:00
|
|
|
Passing \nullptr as \a str is safe if \a len is 0, too, and results in a null string view.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
2019-02-15 20:21:20 +00:00
|
|
|
The behavior is undefined if \a len is negative or, when positive, if \a str is \nullptr.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
This constructor only participates in overload resolution if \c Char is a compatible
|
|
|
|
character type. The compatible character types are: \c QChar, \c ushort, \c char16_t and
|
|
|
|
(on platforms, such as Windows, where it is a 16-bit type) \c wchar_t.
|
|
|
|
*/
|
|
|
|
|
2017-05-03 18:11:34 +00:00
|
|
|
/*!
|
2023-11-29 16:41:53 +00:00
|
|
|
\fn template <typename Char, QStringView::if_compatible_char<Char> = true> QStringView::QStringView(const Char *first, const Char *last)
|
2017-05-03 18:11:34 +00:00
|
|
|
|
|
|
|
Constructs a string view on \a first with length (\a last - \a first).
|
|
|
|
|
|
|
|
The range \c{[first,last)} must remain valid for the lifetime of
|
|
|
|
this string view object.
|
|
|
|
|
2019-02-15 20:21:20 +00:00
|
|
|
Passing \c \nullptr as \a first is safe if \a last is \nullptr, too,
|
2017-05-03 18:11:34 +00:00
|
|
|
and results in a null string view.
|
|
|
|
|
|
|
|
The behavior is undefined if \a last precedes \a first, or \a first
|
2019-02-15 20:21:20 +00:00
|
|
|
is \nullptr and \a last is not.
|
2017-05-03 18:11:34 +00:00
|
|
|
|
|
|
|
This constructor only participates in overload resolution if \c Char
|
|
|
|
is a compatible character type. The compatible character types
|
|
|
|
are: \c QChar, \c ushort, \c char16_t and (on platforms, such as
|
|
|
|
Windows, where it is a 16-bit type) \c wchar_t.
|
|
|
|
*/
|
|
|
|
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
/*!
|
2018-01-04 10:23:37 +00:00
|
|
|
\fn template <typename Char> QStringView::QStringView(const Char *str)
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
Constructs a string view on \a str. The length is determined
|
2017-04-04 22:09:47 +00:00
|
|
|
by scanning for the first \c{Char(0)}.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
\a str must remain valid for the lifetime of this string view object.
|
|
|
|
|
2019-02-15 20:21:20 +00:00
|
|
|
Passing \nullptr as \a str is safe and results in a null string view.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
2017-03-31 17:52:21 +00:00
|
|
|
This constructor only participates in overload resolution if \a
|
|
|
|
str is not an array and if \c Char is a compatible character
|
|
|
|
type. The compatible character types are: \c QChar, \c ushort, \c
|
|
|
|
char16_t and (on platforms, such as Windows, where it is a 16-bit
|
|
|
|
type) \c wchar_t.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2018-01-04 10:23:37 +00:00
|
|
|
\fn template <typename Char, size_t N> QStringView::QStringView(const Char (&string)[N])
|
2017-03-31 17:52:21 +00:00
|
|
|
|
|
|
|
Constructs a string view on the character string literal \a string.
|
2020-09-16 10:04:31 +00:00
|
|
|
The view covers the array until the first \c{Char(0)} is encountered,
|
|
|
|
or \c N, whichever comes first.
|
|
|
|
If you need the full array, use fromArray() instead.
|
2017-03-31 17:52:21 +00:00
|
|
|
|
|
|
|
\a string must remain valid for the lifetime of this string view
|
|
|
|
object.
|
|
|
|
|
|
|
|
This constructor only participates in overload resolution if \a
|
|
|
|
string is an actual array and \c Char is a compatible character
|
|
|
|
type. The compatible character types are: \c QChar, \c ushort, \c
|
|
|
|
char16_t and (on platforms, such as Windows, where it is a 16-bit
|
|
|
|
type) \c wchar_t.
|
2020-09-16 10:04:31 +00:00
|
|
|
|
|
|
|
\sa fromArray
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::QStringView(const QString &str)
|
|
|
|
|
|
|
|
Constructs a string view on \a str.
|
|
|
|
|
|
|
|
\c{str.data()} must remain valid for the lifetime of this string view object.
|
|
|
|
|
|
|
|
The string view will be null if and only if \c{str.isNull()}.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2023-11-29 16:41:53 +00:00
|
|
|
\fn template <typename Container, QStringView::if_compatible_container<Container>> QStringView::QStringView(const Container &str)
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
2023-04-25 21:10:23 +00:00
|
|
|
Constructs a string view on \a str. The length is taken from \c{std::size(str)}.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
2023-04-25 21:10:23 +00:00
|
|
|
\c{std::data(str)} must remain valid for the lifetime of this string view object.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
2023-04-25 21:10:23 +00:00
|
|
|
This constructor only participates in overload resolution if \c Container is a
|
|
|
|
container with a compatible character type as \c{value_type}. The
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
compatible character types are: \c QChar, \c ushort, \c char16_t and
|
|
|
|
(on platforms, such as Windows, where it is a 16-bit type) \c wchar_t.
|
|
|
|
|
2023-04-25 21:10:23 +00:00
|
|
|
The string view will be empty if and only if \c{std::size(str) == 0}. It is unspecified
|
|
|
|
whether this constructor can result in a null string view (\c{std::data(str)} would
|
2019-02-15 20:21:20 +00:00
|
|
|
have to return \nullptr for this).
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
\sa isNull(), isEmpty()
|
|
|
|
*/
|
|
|
|
|
2020-09-16 10:04:31 +00:00
|
|
|
/*!
|
2023-11-29 16:41:53 +00:00
|
|
|
\fn template <typename Char, size_t Size, QStringView::if_compatible_char<Char> = true> static QStringView QStringView::fromArray(const Char (&string)[Size]) noexcept
|
2020-09-16 10:04:31 +00:00
|
|
|
|
|
|
|
Constructs a string view on the full character string literal \a string,
|
|
|
|
including any trailing \c{Char(0)}. If you don't want the
|
|
|
|
null-terminator included in the view then you can chop() it off
|
|
|
|
when you are certain it is at the end. Alternatively you can use
|
|
|
|
the constructor overload taking an array literal which will create
|
|
|
|
a view up to, but not including, the first null-terminator in the data.
|
|
|
|
|
|
|
|
\a string must remain valid for the lifetime of this string view
|
|
|
|
object.
|
|
|
|
|
|
|
|
This function will work with any array literal if \c Char is a
|
|
|
|
compatible character type. The compatible character types are: \c QChar, \c ushort, \c
|
|
|
|
char16_t and (on platforms, such as Windows, where it is a 16-bit
|
|
|
|
type) \c wchar_t.
|
|
|
|
*/
|
|
|
|
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
/*!
|
|
|
|
\fn QString QStringView::toString() const
|
|
|
|
|
|
|
|
Returns a deep copy of this string view's data as a QString.
|
|
|
|
|
|
|
|
The return value will be the null QString if and only if this string view is null.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn const QChar *QStringView::data() const
|
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
//! [const-pointer-to-first-ch]
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns a const pointer to the first character in the string view.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
2017-03-27 13:49:52 +00:00
|
|
|
\note The character array represented by the return value is \e not null-terminated.
|
2022-12-29 16:31:59 +00:00
|
|
|
//! [const-pointer-to-first-ch]
|
2017-03-27 13:49:52 +00:00
|
|
|
|
|
|
|
\sa begin(), end(), utf16()
|
|
|
|
*/
|
|
|
|
|
2020-05-15 13:18:10 +00:00
|
|
|
/*!
|
|
|
|
\fn const QChar *QStringView::constData() const
|
|
|
|
\since 6.0
|
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstringview.cpp const-pointer-to-first-ch
|
2020-05-15 13:18:10 +00:00
|
|
|
|
|
|
|
\sa data(), begin(), end(), utf16()
|
|
|
|
*/
|
|
|
|
|
2017-03-27 13:49:52 +00:00
|
|
|
/*!
|
|
|
|
\fn const storage_type *QStringView::utf16() const
|
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstringview.cpp const-pointer-to-first-ch
|
2017-03-27 13:49:52 +00:00
|
|
|
|
2018-01-04 13:33:06 +00:00
|
|
|
\c{storage_type} is \c{char16_t}.
|
2017-03-27 13:49:52 +00:00
|
|
|
|
|
|
|
\sa begin(), end(), data()
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::const_iterator QStringView::begin() const
|
|
|
|
|
|
|
|
Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the first character in
|
2021-08-13 14:22:38 +00:00
|
|
|
the string view.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
2020-12-09 18:52:31 +00:00
|
|
|
\sa end(), constBegin(), cbegin(), rbegin(), data()
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::const_iterator QStringView::cbegin() const
|
|
|
|
|
|
|
|
Same as begin().
|
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
2020-12-09 18:52:31 +00:00
|
|
|
\sa cend(), begin(), constBegin(), crbegin(), data()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::const_iterator QStringView::constBegin() const
|
|
|
|
\since 6.1
|
|
|
|
|
|
|
|
Same as begin().
|
|
|
|
|
|
|
|
\sa constEnd(), begin(), cbegin(), crbegin(), data()
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::const_iterator QStringView::end() const
|
|
|
|
|
|
|
|
Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the imaginary
|
|
|
|
character after the last character in the list.
|
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
2020-12-09 18:52:31 +00:00
|
|
|
\sa begin(), constEnd(), cend(), rend()
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*! \fn QStringView::const_iterator QStringView::cend() const
|
|
|
|
|
|
|
|
Same as end().
|
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
2020-12-09 18:52:31 +00:00
|
|
|
\sa cbegin(), end(), constEnd(), crend()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*! \fn QStringView::const_iterator QStringView::constEnd() const
|
|
|
|
\since 6.1
|
|
|
|
|
|
|
|
Same as end().
|
|
|
|
|
|
|
|
\sa constBegin(), end(), cend(), crend()
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::const_reverse_iterator QStringView::rbegin() const
|
|
|
|
|
|
|
|
Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing to the first
|
2021-08-13 14:22:38 +00:00
|
|
|
character in the string view, in reverse order.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
|
|
|
\sa rend(), crbegin(), begin()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::const_reverse_iterator QStringView::crbegin() const
|
|
|
|
|
|
|
|
Same as rbegin().
|
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
|
|
|
\sa crend(), rbegin(), cbegin()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::const_reverse_iterator QStringView::rend() const
|
|
|
|
|
|
|
|
Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing to one past
|
2021-08-13 14:22:38 +00:00
|
|
|
the last character in the string view, in reverse order.
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
|
|
|
\sa rbegin(), crend(), end()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView::const_reverse_iterator QStringView::crend() const
|
|
|
|
|
|
|
|
Same as rend().
|
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
|
|
|
\sa crbegin(), rend(), cend()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn bool QStringView::empty() const
|
|
|
|
|
|
|
|
Returns whether this string view is empty - that is, whether \c{size() == 0}.
|
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
|
|
|
\sa isEmpty(), isNull(), size(), length()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn bool QStringView::isEmpty() const
|
|
|
|
|
|
|
|
Returns whether this string view is empty - that is, whether \c{size() == 0}.
|
|
|
|
|
|
|
|
This function is provided for compatibility with other Qt containers.
|
|
|
|
|
|
|
|
\sa empty(), isNull(), size(), length()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn bool QStringView::isNull() const
|
|
|
|
|
|
|
|
Returns whether this string view is null - that is, whether \c{data() == nullptr}.
|
|
|
|
|
|
|
|
This functions is provided for compatibility with other Qt containers.
|
|
|
|
|
|
|
|
\sa empty(), isEmpty(), size(), length()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2017-10-10 07:42:41 +00:00
|
|
|
\fn qsizetype QStringView::size() const
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
2023-06-02 17:01:09 +00:00
|
|
|
Returns the size of this string view, in UTF-16 code units (that is,
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
surrogate pairs count as two for the purposes of this function, the same
|
2020-08-12 11:16:27 +00:00
|
|
|
as in QString).
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
\sa empty(), isEmpty(), isNull(), length()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2022-08-11 12:10:03 +00:00
|
|
|
\fn QStringView::length() const
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
Q{*String,ByteArray}View::length(): use qsizetype, not int
Looks like these ones have been forgotten in the Qt 5 -> 6 upgrade
to qsizetype. Change them to return qsizetype as well,
and fix the docs. Being entirely inline, non-exported classes, we
should be able to get away with it without affecting binary
compatibility. Moreover, there's no reason for keeping them
deprecated.
Requires some minor adjustments, just like the ones done for
size()'s changes.
[ChangeLog][QtCore][QStringView] The length() function
now returns `qsizetype`, not `int`, for consistency with the
other string and container classes in Qt. Following this
change, it has been un-deprecated.
[ChangeLog][QtCore][QAnyStringView] The length() function
now returns `qsizetype`, not `int`, for consistency with the
other string and container classes in Qt. Following this
change, it has been un-deprecated.
[ChangeLog][QtCore][QUtf8StringView] The length() function
now returns `qsizetype`, not `int`, for consistency with the
other string and container classes in Qt. Following this
change, it has been un-deprecated.
[ChangeLog][QtCore][QByteArrayView] The length() function
now returns `qsizetype`, not `int`, for consistency with the
other string and container classes in Qt. Following this
change, it has been un-deprecated.
Fixes: QTBUG-92496
Change-Id: Ie0f4939d1083884e95d4725f891b6c6764532cb8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-09 16:14:42 +00:00
|
|
|
Same as size().
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
This function is provided for compatibility with other Qt containers.
|
|
|
|
|
|
|
|
\sa empty(), isEmpty(), isNull(), size()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2017-10-10 07:42:41 +00:00
|
|
|
\fn QChar QStringView::operator[](qsizetype n) const
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
Returns the character at position \a n in this string view.
|
|
|
|
|
|
|
|
The behavior is undefined if \a n is negative or not less than size().
|
|
|
|
|
|
|
|
\sa at(), front(), back()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2017-10-10 07:42:41 +00:00
|
|
|
\fn QChar QStringView::at(qsizetype n) const
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
Returns the character at position \a n in this string view.
|
|
|
|
|
|
|
|
The behavior is undefined if \a n is negative or not less than size().
|
|
|
|
|
|
|
|
\sa operator[](), front(), back()
|
|
|
|
*/
|
|
|
|
|
2019-06-03 09:43:24 +00:00
|
|
|
/*!
|
2020-02-14 16:45:45 +00:00
|
|
|
\fn template <typename...Args> QString QStringView::arg(Args &&...args) const
|
2022-03-09 18:28:01 +00:00
|
|
|
\fn template <typename...Args> QString QLatin1StringView::arg(Args &&...args) const
|
2020-02-14 16:45:45 +00:00
|
|
|
\fn template <typename...Args> QString QString::arg(Args &&...args) const
|
2019-06-03 09:43:24 +00:00
|
|
|
\since 5.14
|
|
|
|
|
|
|
|
Replaces occurrences of \c{%N} in this string with the corresponding
|
|
|
|
argument from \a args. The arguments are not positional: the first of
|
|
|
|
the \a args replaces the \c{%N} with the lowest \c{N} (all of them), the
|
|
|
|
second of the \a args the \c{%N} with the next-lowest \c{N} etc.
|
|
|
|
|
Extend QString::arg(QString, ..., QString) to more than 9 arguments
Now that we have QStringView::arg(), we can use it to implement a
similarly flexible QString::arg(). It's not as straight-forward as in
QStringView, though: QString has existing arg() overloads that all
become worse matches with the introduction of the new,
perfectly-forwarding overload.
So in order to allow calling of the other arg() functions, first
constrain the new arg() function to arguments that are convertible to
QString, QStringView, or QLatin1String, and then delegate to the
QStringView version. To stay compatible with the previous overloads,
which accepted anything that implicitly converts to QString (in
particular, QStringBuilder expressions), add a new overload of
qStringLikeToView, taking const QString &. This benefits the existing
QStringView and QLatin1View versions, too.
[ChangeLog][QtCore][QString] QString::arg(QString, ..., QString) can
now be called with more than nine arguments, as well as with
QStringViews.
Change-Id: I1e717a1bc696346808bcae45dc47762a492c8714
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2017-01-07 20:58:01 +00:00
|
|
|
\c Args can consist of anything that implicitly converts to QString,
|
2022-03-09 20:26:01 +00:00
|
|
|
QStringView or QLatin1StringView.
|
2019-06-03 09:43:24 +00:00
|
|
|
|
|
|
|
In addition, the following types are also supported: QChar, QLatin1Char.
|
|
|
|
|
|
|
|
\sa QString::arg()
|
|
|
|
*/
|
|
|
|
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
/*!
|
|
|
|
\fn QChar QStringView::front() const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the first character in the string view. Same as first().
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
//! [calling-on-empty-is-UB]
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
\warning Calling this function on an empty string view constitutes
|
|
|
|
undefined behavior.
|
2022-12-29 16:31:59 +00:00
|
|
|
//! [calling-on-empty-is-UB]
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
\sa back(), first(), last()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QChar QStringView::back() const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the last character in the string view. Same as last().
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
This function is provided for STL compatibility.
|
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstringview.cpp calling-on-empty-is-UB
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
\sa front(), first(), last()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QChar QStringView::first() const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the first character in the string view. Same as front().
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
This function is provided for compatibility with other Qt containers.
|
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstringview.cpp calling-on-empty-is-UB
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
\sa front(), back(), last()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QChar QStringView::last() const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the last character in the string view. Same as back().
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
This function is provided for compatibility with other Qt containers.
|
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstringview.cpp calling-on-empty-is-UB
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
|
|
|
|
\sa back(), front(), first()
|
|
|
|
*/
|
|
|
|
|
2017-01-30 23:36:54 +00:00
|
|
|
/*!
|
2017-10-10 07:42:41 +00:00
|
|
|
\fn QStringView QStringView::mid(qsizetype start, qsizetype length) const
|
2017-01-30 23:36:54 +00:00
|
|
|
|
|
|
|
Returns the substring of length \a length starting at position
|
|
|
|
\a start in this object.
|
|
|
|
|
2021-05-25 13:04:48 +00:00
|
|
|
\deprecated Use sliced() instead in new code.
|
2020-06-02 13:51:15 +00:00
|
|
|
|
|
|
|
Returns an empty string view if \a start exceeds the
|
2021-08-13 14:22:38 +00:00
|
|
|
length of the string view. If there are less than \a length characters
|
|
|
|
available in the string view starting at \a start, or if
|
2020-06-02 13:51:15 +00:00
|
|
|
\a length is negative (default), the function returns all characters that
|
|
|
|
are available from \a start.
|
2017-01-30 23:36:54 +00:00
|
|
|
|
2020-06-10 13:00:48 +00:00
|
|
|
\sa first(), last(), sliced(), chopped(), chop(), truncate()
|
2017-01-30 23:36:54 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2017-10-10 07:42:41 +00:00
|
|
|
\fn QStringView QStringView::left(qsizetype length) const
|
2017-01-30 23:36:54 +00:00
|
|
|
|
2021-05-25 13:04:48 +00:00
|
|
|
\deprecated Use first() instead in new code.
|
2020-06-02 13:51:15 +00:00
|
|
|
|
2017-01-30 23:36:54 +00:00
|
|
|
Returns the substring of length \a length starting at position
|
|
|
|
0 in this object.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
The entire string view is returned if \a length is greater than or equal
|
2020-06-02 13:51:15 +00:00
|
|
|
to size(), or less than zero.
|
2017-01-30 23:36:54 +00:00
|
|
|
|
2020-06-10 13:00:48 +00:00
|
|
|
\sa first(), last(), sliced(), startsWith(), chopped(), chop(), truncate()
|
2017-01-30 23:36:54 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2017-10-10 07:42:41 +00:00
|
|
|
\fn QStringView QStringView::right(qsizetype length) const
|
2017-01-30 23:36:54 +00:00
|
|
|
|
2021-05-25 13:04:48 +00:00
|
|
|
\deprecated Use last() instead in new code.
|
2020-06-02 13:51:15 +00:00
|
|
|
|
2017-01-30 23:36:54 +00:00
|
|
|
Returns the substring of length \a length starting at position
|
|
|
|
size() - \a length in this object.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
The entire string view is returned if \a length is greater than or equal
|
2020-06-02 13:51:15 +00:00
|
|
|
to size(), or less than zero.
|
2017-01-30 23:36:54 +00:00
|
|
|
|
2020-06-10 13:00:48 +00:00
|
|
|
\sa first(), last(), sliced(), endsWith(), chopped(), chop(), truncate()
|
2017-04-05 06:55:19 +00:00
|
|
|
*/
|
|
|
|
|
2020-06-03 19:59:19 +00:00
|
|
|
/*!
|
|
|
|
\fn QStringView QStringView::first(qsizetype n) const
|
|
|
|
\since 6.0
|
|
|
|
|
|
|
|
Returns a string view that points to the first \a n characters
|
2021-08-13 14:22:38 +00:00
|
|
|
of this string view.
|
2020-06-03 19:59:19 +00:00
|
|
|
|
|
|
|
\note The behavior is undefined when \a n < 0 or \a n > size().
|
|
|
|
|
2020-09-25 10:30:42 +00:00
|
|
|
\sa last(), sliced(), startsWith(), chopped(), chop(), truncate()
|
2020-06-03 19:59:19 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QStringView QStringView::last(qsizetype n) const
|
|
|
|
\since 6.0
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns a string view that points to the last \a n characters of this string
|
|
|
|
view.
|
2020-06-03 19:59:19 +00:00
|
|
|
|
|
|
|
\note The behavior is undefined when \a n < 0 or \a n > size().
|
|
|
|
|
2020-09-25 10:30:42 +00:00
|
|
|
\sa first(), sliced(), endsWith(), chopped(), chop(), truncate()
|
2020-06-03 19:59:19 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2020-06-10 13:00:48 +00:00
|
|
|
\fn QStringView QStringView::sliced(qsizetype pos, qsizetype n) const
|
2020-06-03 19:59:19 +00:00
|
|
|
\since 6.0
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns a string view that points to \a n characters of this string view,
|
2020-06-03 19:59:19 +00:00
|
|
|
starting at position \a pos.
|
|
|
|
|
2023-10-01 15:24:22 +00:00
|
|
|
//! [UB-sliced-index-length]
|
2020-06-03 19:59:19 +00:00
|
|
|
\note The behavior is undefined when \a pos < 0, \a n < 0,
|
|
|
|
or \a pos + \a n > size().
|
2023-10-01 15:24:22 +00:00
|
|
|
//! [UB-sliced-index-length]
|
2020-06-03 19:59:19 +00:00
|
|
|
|
|
|
|
\sa first(), last(), chopped(), chop(), truncate()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2020-06-27 09:26:42 +00:00
|
|
|
\fn QStringView QStringView::sliced(qsizetype pos) const
|
2020-06-03 19:59:19 +00:00
|
|
|
\since 6.0
|
2020-06-27 09:26:42 +00:00
|
|
|
\overload
|
2020-06-03 19:59:19 +00:00
|
|
|
|
|
|
|
Returns a string view starting at position \a pos in this object,
|
|
|
|
and extending to its end.
|
|
|
|
|
2023-10-01 15:24:22 +00:00
|
|
|
//! [UB-sliced-index-only]
|
2020-06-03 19:59:19 +00:00
|
|
|
\note The behavior is undefined when \a pos < 0 or \a pos > size().
|
2023-10-01 15:24:22 +00:00
|
|
|
//! [UB-sliced-index-only]
|
2020-06-03 19:59:19 +00:00
|
|
|
|
|
|
|
\sa first(), last(), chopped(), chop(), truncate()
|
|
|
|
*/
|
|
|
|
|
2017-04-05 06:55:19 +00:00
|
|
|
/*!
|
2017-10-10 07:42:41 +00:00
|
|
|
\fn QStringView QStringView::chopped(qsizetype length) const
|
2017-04-05 06:55:19 +00:00
|
|
|
|
|
|
|
Returns the substring of length size() - \a length starting at the
|
|
|
|
beginning of this object.
|
|
|
|
|
|
|
|
Same as \c{left(size() - length)}.
|
|
|
|
|
|
|
|
\note The behavior is undefined when \a length < 0 or \a length > size().
|
|
|
|
|
|
|
|
\sa mid(), left(), right(), chop(), truncate()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2017-10-10 07:42:41 +00:00
|
|
|
\fn void QStringView::truncate(qsizetype length)
|
2017-04-05 06:55:19 +00:00
|
|
|
|
|
|
|
Truncates this string view to length \a length.
|
|
|
|
|
|
|
|
Same as \c{*this = left(length)}.
|
|
|
|
|
|
|
|
\note The behavior is undefined when \a length < 0 or \a length > size().
|
|
|
|
|
|
|
|
\sa mid(), left(), right(), chopped(), chop()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2017-10-10 07:42:41 +00:00
|
|
|
\fn void QStringView::chop(qsizetype length)
|
2017-04-05 06:55:19 +00:00
|
|
|
|
|
|
|
Truncates this string view by \a length characters.
|
|
|
|
|
|
|
|
Same as \c{*this = left(size() - length)}.
|
|
|
|
|
|
|
|
\note The behavior is undefined when \a length < 0 or \a length > size().
|
|
|
|
|
|
|
|
\sa mid(), left(), right(), chopped(), truncate()
|
2017-01-30 23:36:54 +00:00
|
|
|
*/
|
|
|
|
|
2017-05-04 17:41:48 +00:00
|
|
|
/*!
|
|
|
|
\fn QStringView QStringView::trimmed() const
|
|
|
|
|
|
|
|
Strips leading and trailing whitespace and returns the result.
|
|
|
|
|
|
|
|
Whitespace means any character for which QChar::isSpace() returns
|
|
|
|
\c true. This includes the ASCII characters '\\t', '\\n', '\\v',
|
|
|
|
'\\f', '\\r', and ' '.
|
|
|
|
*/
|
|
|
|
|
2018-07-11 10:59:30 +00:00
|
|
|
/*!
|
2019-07-29 06:44:04 +00:00
|
|
|
\fn int QStringView::compare(QStringView str, Qt::CaseSensitivity cs) const
|
2018-07-11 10:59:30 +00:00
|
|
|
\since 5.12
|
|
|
|
|
2023-10-04 12:55:37 +00:00
|
|
|
Compares this string view with string view \a str and returns a negative integer if
|
|
|
|
this string view is less than \a str, a positive integer if it is greater than
|
|
|
|
\a str, and zero if they are equal.
|
2018-07-11 10:59:30 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
|
2019-07-29 06:44:04 +00:00
|
|
|
|
|
|
|
\sa operator==(), operator<(), operator>()
|
|
|
|
*/
|
|
|
|
|
2023-01-17 07:13:04 +00:00
|
|
|
/*!
|
|
|
|
\fn int QStringView::compare(QUtf8StringView str, Qt::CaseSensitivity cs) const
|
|
|
|
\since 6.5
|
|
|
|
|
2023-10-04 12:55:37 +00:00
|
|
|
Compares this string view with QUtf8StringView \a str and returns a negative integer if
|
|
|
|
this string view is less than \a str, a positive integer if it is greater than
|
|
|
|
\a str, and zero if they are equal.
|
2023-01-17 07:13:04 +00:00
|
|
|
|
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
|
|
|
|
|
|
|
|
\sa operator==(), operator<(), operator>()
|
|
|
|
*/
|
|
|
|
|
2019-07-29 06:44:04 +00:00
|
|
|
/*!
|
2022-03-09 20:26:01 +00:00
|
|
|
\fn int QStringView::compare(QLatin1StringView l1, Qt::CaseSensitivity cs) const
|
2019-07-29 06:44:04 +00:00
|
|
|
\fn int QStringView::compare(QChar ch) const
|
|
|
|
\fn int QStringView::compare(QChar ch, Qt::CaseSensitivity cs) const
|
2020-11-13 15:03:16 +00:00
|
|
|
\since 5.15
|
2019-07-29 06:44:04 +00:00
|
|
|
|
2023-10-04 12:55:37 +00:00
|
|
|
Compares this string view to the Latin-1 string view \a l1, or the character \a ch.
|
|
|
|
Returns a negative integer if this string view is less than \a l1 or \a ch,
|
|
|
|
a positive integer if it is greater than \a l1 or \a ch, and zero if they are equal.
|
2019-07-29 06:44:04 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
|
2018-07-11 10:59:30 +00:00
|
|
|
|
|
|
|
\sa operator==(), operator<(), operator>()
|
|
|
|
*/
|
|
|
|
|
2020-10-29 16:57:24 +00:00
|
|
|
/*!
|
|
|
|
\fn QStringView::operator==(QStringView lhs, QStringView rhs)
|
|
|
|
\fn QStringView::operator!=(QStringView lhs, QStringView rhs)
|
|
|
|
\fn QStringView::operator< (QStringView lhs, QStringView rhs)
|
|
|
|
\fn QStringView::operator<=(QStringView lhs, QStringView rhs)
|
|
|
|
\fn QStringView::operator> (QStringView lhs, QStringView rhs)
|
|
|
|
\fn QStringView::operator>=(QStringView lhs, QStringView rhs)
|
|
|
|
|
|
|
|
Operators for comparing \a lhs to \a rhs.
|
|
|
|
|
|
|
|
\sa compare()
|
|
|
|
*/
|
|
|
|
|
2022-02-28 15:10:32 +00:00
|
|
|
/*!
|
|
|
|
\fn int QStringView::localeAwareCompare(QStringView other) const
|
|
|
|
\since 6.4
|
|
|
|
|
|
|
|
Compares this string view with the \a other string view and returns
|
|
|
|
an integer less than, equal to, or greater than zero if this string
|
|
|
|
view is less than, equal to, or greater than the \a other string view.
|
|
|
|
|
|
|
|
The comparison is performed in a locale- and also platform-dependent
|
|
|
|
manner. Use this function to present sorted lists of strings to the
|
|
|
|
user.
|
|
|
|
|
|
|
|
\sa {Comparing Strings}
|
|
|
|
*/
|
|
|
|
|
2022-12-15 15:39:18 +00:00
|
|
|
/*
|
|
|
|
//! [utf16-or-latin1-or-ch]
|
|
|
|
the UTF-16 string viewed by \a str, the Latin-1 string viewed by \a l1,
|
|
|
|
or the character \a ch
|
|
|
|
//! [utf16-or-latin1-or-ch]
|
|
|
|
*/
|
|
|
|
|
2017-04-24 09:32:17 +00:00
|
|
|
/*!
|
|
|
|
\fn bool QStringView::startsWith(QStringView str, Qt::CaseSensitivity cs) const
|
2022-03-09 20:26:01 +00:00
|
|
|
\fn bool QStringView::startsWith(QLatin1StringView l1, Qt::CaseSensitivity cs) const
|
2017-04-24 09:32:17 +00:00
|
|
|
\fn bool QStringView::startsWith(QChar ch) const
|
|
|
|
\fn bool QStringView::startsWith(QChar ch, Qt::CaseSensitivity cs) const
|
|
|
|
|
2022-12-15 15:39:18 +00:00
|
|
|
Returns \c true if this string view starts with
|
|
|
|
\include qstringview.cpp utf16-or-latin1-or-ch
|
|
|
|
respectively; otherwise returns \c false.
|
2017-04-24 09:32:17 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {search}
|
2017-04-24 09:32:17 +00:00
|
|
|
|
2017-11-24 12:27:52 +00:00
|
|
|
\sa endsWith()
|
2017-04-24 09:32:17 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn bool QStringView::endsWith(QStringView str, Qt::CaseSensitivity cs) const
|
2022-03-09 20:26:01 +00:00
|
|
|
\fn bool QStringView::endsWith(QLatin1StringView l1, Qt::CaseSensitivity cs) const
|
2017-04-24 09:32:17 +00:00
|
|
|
\fn bool QStringView::endsWith(QChar ch) const
|
|
|
|
\fn bool QStringView::endsWith(QChar ch, Qt::CaseSensitivity cs) const
|
|
|
|
|
2022-12-15 15:39:18 +00:00
|
|
|
Returns \c true if this string view ends with
|
|
|
|
\include qstringview.cpp utf16-or-latin1-or-ch
|
|
|
|
respectively; otherwise returns \c false.
|
2017-04-24 09:32:17 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {search}
|
2017-04-24 09:32:17 +00:00
|
|
|
|
2017-11-24 12:27:52 +00:00
|
|
|
\sa startsWith()
|
2017-04-24 09:32:17 +00:00
|
|
|
*/
|
|
|
|
|
2019-03-25 11:42:19 +00:00
|
|
|
/*!
|
2019-05-17 13:37:45 +00:00
|
|
|
\fn qsizetype QStringView::indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
|
2022-03-09 20:26:01 +00:00
|
|
|
\fn qsizetype QStringView::indexOf(QLatin1StringView l1, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
|
2019-05-17 13:37:45 +00:00
|
|
|
\fn qsizetype QStringView::indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
|
2019-03-25 11:42:19 +00:00
|
|
|
\since 5.14
|
|
|
|
|
2022-12-15 15:39:18 +00:00
|
|
|
Returns the index position of the first occurrence of
|
|
|
|
\include qstringview.cpp utf16-or-latin1-or-ch
|
|
|
|
respectively, in this string view, searching forward from index position
|
|
|
|
\a from. Returns -1 if \a str, \a l1 or \a ch is not found, respectively.
|
2019-03-25 11:42:19 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {search}
|
2019-03-25 11:42:19 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc negative-index-start-search-from-end
|
2019-03-25 11:42:19 +00:00
|
|
|
|
|
|
|
\sa QString::indexOf()
|
|
|
|
*/
|
|
|
|
|
2019-04-11 12:57:59 +00:00
|
|
|
/*!
|
|
|
|
\fn bool QStringView::contains(QStringView str, Qt::CaseSensitivity cs) const
|
2022-03-09 20:26:01 +00:00
|
|
|
\fn bool QStringView::contains(QLatin1StringView l1, Qt::CaseSensitivity cs) const
|
2019-04-11 12:57:59 +00:00
|
|
|
\fn bool QStringView::contains(QChar c, Qt::CaseSensitivity cs) const
|
|
|
|
\since 5.14
|
|
|
|
|
2022-12-15 15:39:18 +00:00
|
|
|
Returns \c true if this string view contains an occurrence of
|
|
|
|
\include qstringview.cpp utf16-or-latin1-or-ch
|
|
|
|
respectively; otherwise returns \c false.
|
2019-04-11 12:57:59 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {search}
|
2019-04-11 12:57:59 +00:00
|
|
|
|
|
|
|
\sa indexOf()
|
|
|
|
*/
|
|
|
|
|
2019-04-02 13:24:44 +00:00
|
|
|
/*!
|
|
|
|
\fn qsizetype QStringView::lastIndexOf(QStringView str, qsizetype from, Qt::CaseSensitivity cs) const
|
2022-03-09 20:26:01 +00:00
|
|
|
\fn qsizetype QStringView::lastIndexOf(QLatin1StringView l1, qsizetype from, Qt::CaseSensitivity cs) const
|
2019-04-02 13:24:44 +00:00
|
|
|
\fn qsizetype QStringView::lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs) const
|
|
|
|
\since 5.14
|
|
|
|
|
2022-12-15 15:39:18 +00:00
|
|
|
Returns the index position of the last occurrence of
|
|
|
|
\include qstringview.cpp utf16-or-latin1-or-ch
|
|
|
|
respectively, in this string view, searching backward from index
|
|
|
|
position \a from.
|
2022-12-29 16:31:59 +00:00
|
|
|
|
|
|
|
\include qstring.qdocinc negative-index-start-search-from-end
|
2019-04-02 13:24:44 +00:00
|
|
|
|
2022-12-15 15:39:18 +00:00
|
|
|
Returns -1 if \a str, \a l1 or \a c is not found, respectively.
|
2022-12-29 16:31:59 +00:00
|
|
|
|
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {search}
|
2019-04-02 13:24:44 +00:00
|
|
|
|
QS(V)/QBA(V)/QL1S::lastIndexOf: fix the offset calculations
When trying to fix 0-length matches at the end of a QString,
be83ff65c424cff1036e7da19d6175826d9f7ed9 actually introduced a
regression due to how lastIndexOf interprets its `from` parameter.
The "established" (=legacy) interpretation of a negative `from` is that
it is supposed to indicate that we want the last match at offset `from +
size()`. With the default from of -1, that means we want a match
starting at most at position `size() - 1` inclusive, i.e. *at* the last
position in the string. The aforementioned commit changed that, by
allowing a match at position `size()` instead, and this behavioral
change broke code.
The problem the commit tried to fix was that empty matches *are* allowed
to happen at position size(): the last match of regexp // inside the
string "test" is indeed at position 4 (the regexp matches 5 times).
Changing the meaning of negative from to include that last position (in
general: to include position `from+size()+1` as the last valid matching
position, in case of a negative `from`) has unfortunately broken client
code. Therefore, we need to revert it. This patch does that, adapting
the tests as necessary (drive-by: a broken #undef is removed).
Reverting the patch however is not sufficient. What we are facing here
is an historical API mistake that forces the default `from` (-1) to
*skip* the truly last possible match; the mistake is that thre is simply
no way to pass a negative `from` and obtain that match. This means that
the revert will now cause code like this:
str.lastIndexOf(QRE("")); // `from` defaulted to -1
NOT to return str.size(), which is counter-intuitive and wrong. Other
APIs expose this inconsistency: for instance, using
QRegularExpressionIterator would actually yield a last match at position
str.size(). Similarly, using QString::count would return `str.size()+1`.
Note that, in general, it's still possible for clients to call
str.lastIndexOf(~~~, str.size())
to get the "truly last" match.
This patch also tries to fix this case ("have our cake and eat it").
First and foremost, a couple of bugs in QByteArray and QString code are
fixed (when dealing with 0-length needles).
Second, a lastIndexOf overload is added. One overload is the "legacy"
one, that will honor the pre-existing semantics of negative `from`. The
new overload does NOT take a `from` parameter at all, and will actually
match from the truly end (by simply calling `lastIndexOf(~~~, size())`
internally).
These overloads are offered for all the existing lastIndexOf()
overloads, not only the ones taking QRE.
This means that code simply using `lastIndexOf` without any `from`
parameter get the "correct" behavior for 0-length matches, and code that
specifies one gets the legacy behavior. Matches of length > 0 are not
affected anyways, as they can't match at position size().
[ChangeLog][Important Behavior Changes] A regression in the behavior of
the lastIndexOf() function on text-related containers and views
(QString, QStringView, QByteArray, QByteArrayView, QLatin1String) has
been fixed, and the behavior made consistent and more in line with
user expectations. When lastIndexOf() is invoked with a negative `from`
position, the last match has now to start at the last character in the
container/view (before, it was at the position *past* the last
character). This makes a difference when using lastIndexOf() with a
needle that has 0 length (for instance an empty string, a regular
expression that can match 0 characters, and so on); any other case is
unaffected. To retrieve the "truly last" match, one can pass a
positive `from` offset to lastIndexOf() (basically, pass `size()` as the
`from` parameter). To make calls such as `text.lastIndexOf(~~~);`, that
do not pass any `from` parameter, behave properly, a new lastIndexOf()
overload has been added to all the text containers/views. This overload
does not take a `from` parameter at all, and will search starting from
one character past the end of the text, therefore returning a correct
result when used with needles that may yield 0-length matches. Client
code may need to be recompiled in order to use this new overload.
Conversely, client code that needs to skip the "truly last" match now
needs to pass -1 as the `from` parameter instead of relying on the
default.
Change-Id: I5e92bdcf1a57c2c3cca97b6adccf0883d00a92e5
Fixes: QTBUG-94215
Pick-to: 6.2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-06-08 14:44:26 +00:00
|
|
|
\note When searching for a 0-length \a str or \a l1, the match at
|
|
|
|
the end of the data is excluded from the search by a negative \a
|
|
|
|
from, even though \c{-1} is normally thought of as searching from
|
|
|
|
the end of the string view: the match at the end is \e after the
|
|
|
|
last character, so it is excluded. To include such a final empty
|
|
|
|
match, either give a positive value for \a from or omit the \a from
|
|
|
|
parameter entirely.
|
|
|
|
|
|
|
|
\sa QString::lastIndexOf()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn qsizetype QStringView::lastIndexOf(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
|
2022-03-09 20:26:01 +00:00
|
|
|
\fn qsizetype QStringView::lastIndexOf(QLatin1StringView l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
|
QS(V)/QBA(V)/QL1S::lastIndexOf: fix the offset calculations
When trying to fix 0-length matches at the end of a QString,
be83ff65c424cff1036e7da19d6175826d9f7ed9 actually introduced a
regression due to how lastIndexOf interprets its `from` parameter.
The "established" (=legacy) interpretation of a negative `from` is that
it is supposed to indicate that we want the last match at offset `from +
size()`. With the default from of -1, that means we want a match
starting at most at position `size() - 1` inclusive, i.e. *at* the last
position in the string. The aforementioned commit changed that, by
allowing a match at position `size()` instead, and this behavioral
change broke code.
The problem the commit tried to fix was that empty matches *are* allowed
to happen at position size(): the last match of regexp // inside the
string "test" is indeed at position 4 (the regexp matches 5 times).
Changing the meaning of negative from to include that last position (in
general: to include position `from+size()+1` as the last valid matching
position, in case of a negative `from`) has unfortunately broken client
code. Therefore, we need to revert it. This patch does that, adapting
the tests as necessary (drive-by: a broken #undef is removed).
Reverting the patch however is not sufficient. What we are facing here
is an historical API mistake that forces the default `from` (-1) to
*skip* the truly last possible match; the mistake is that thre is simply
no way to pass a negative `from` and obtain that match. This means that
the revert will now cause code like this:
str.lastIndexOf(QRE("")); // `from` defaulted to -1
NOT to return str.size(), which is counter-intuitive and wrong. Other
APIs expose this inconsistency: for instance, using
QRegularExpressionIterator would actually yield a last match at position
str.size(). Similarly, using QString::count would return `str.size()+1`.
Note that, in general, it's still possible for clients to call
str.lastIndexOf(~~~, str.size())
to get the "truly last" match.
This patch also tries to fix this case ("have our cake and eat it").
First and foremost, a couple of bugs in QByteArray and QString code are
fixed (when dealing with 0-length needles).
Second, a lastIndexOf overload is added. One overload is the "legacy"
one, that will honor the pre-existing semantics of negative `from`. The
new overload does NOT take a `from` parameter at all, and will actually
match from the truly end (by simply calling `lastIndexOf(~~~, size())`
internally).
These overloads are offered for all the existing lastIndexOf()
overloads, not only the ones taking QRE.
This means that code simply using `lastIndexOf` without any `from`
parameter get the "correct" behavior for 0-length matches, and code that
specifies one gets the legacy behavior. Matches of length > 0 are not
affected anyways, as they can't match at position size().
[ChangeLog][Important Behavior Changes] A regression in the behavior of
the lastIndexOf() function on text-related containers and views
(QString, QStringView, QByteArray, QByteArrayView, QLatin1String) has
been fixed, and the behavior made consistent and more in line with
user expectations. When lastIndexOf() is invoked with a negative `from`
position, the last match has now to start at the last character in the
container/view (before, it was at the position *past* the last
character). This makes a difference when using lastIndexOf() with a
needle that has 0 length (for instance an empty string, a regular
expression that can match 0 characters, and so on); any other case is
unaffected. To retrieve the "truly last" match, one can pass a
positive `from` offset to lastIndexOf() (basically, pass `size()` as the
`from` parameter). To make calls such as `text.lastIndexOf(~~~);`, that
do not pass any `from` parameter, behave properly, a new lastIndexOf()
overload has been added to all the text containers/views. This overload
does not take a `from` parameter at all, and will search starting from
one character past the end of the text, therefore returning a correct
result when used with needles that may yield 0-length matches. Client
code may need to be recompiled in order to use this new overload.
Conversely, client code that needs to skip the "truly last" match now
needs to pass -1 as the `from` parameter instead of relying on the
default.
Change-Id: I5e92bdcf1a57c2c3cca97b6adccf0883d00a92e5
Fixes: QTBUG-94215
Pick-to: 6.2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-06-08 14:44:26 +00:00
|
|
|
\since 6.2
|
|
|
|
\overload lastIndexOf()
|
|
|
|
|
2022-12-15 15:39:18 +00:00
|
|
|
Returns the index position of the last occurrence of the UTF-16 string viewed
|
|
|
|
by \a str or the Latin-1 string viewed by \a l1 respectively, in this string
|
|
|
|
view searching backward from the last character of this string view. Returns
|
|
|
|
-1 if \a str or \a l1 is not found, respectively.
|
QS(V)/QBA(V)/QL1S::lastIndexOf: fix the offset calculations
When trying to fix 0-length matches at the end of a QString,
be83ff65c424cff1036e7da19d6175826d9f7ed9 actually introduced a
regression due to how lastIndexOf interprets its `from` parameter.
The "established" (=legacy) interpretation of a negative `from` is that
it is supposed to indicate that we want the last match at offset `from +
size()`. With the default from of -1, that means we want a match
starting at most at position `size() - 1` inclusive, i.e. *at* the last
position in the string. The aforementioned commit changed that, by
allowing a match at position `size()` instead, and this behavioral
change broke code.
The problem the commit tried to fix was that empty matches *are* allowed
to happen at position size(): the last match of regexp // inside the
string "test" is indeed at position 4 (the regexp matches 5 times).
Changing the meaning of negative from to include that last position (in
general: to include position `from+size()+1` as the last valid matching
position, in case of a negative `from`) has unfortunately broken client
code. Therefore, we need to revert it. This patch does that, adapting
the tests as necessary (drive-by: a broken #undef is removed).
Reverting the patch however is not sufficient. What we are facing here
is an historical API mistake that forces the default `from` (-1) to
*skip* the truly last possible match; the mistake is that thre is simply
no way to pass a negative `from` and obtain that match. This means that
the revert will now cause code like this:
str.lastIndexOf(QRE("")); // `from` defaulted to -1
NOT to return str.size(), which is counter-intuitive and wrong. Other
APIs expose this inconsistency: for instance, using
QRegularExpressionIterator would actually yield a last match at position
str.size(). Similarly, using QString::count would return `str.size()+1`.
Note that, in general, it's still possible for clients to call
str.lastIndexOf(~~~, str.size())
to get the "truly last" match.
This patch also tries to fix this case ("have our cake and eat it").
First and foremost, a couple of bugs in QByteArray and QString code are
fixed (when dealing with 0-length needles).
Second, a lastIndexOf overload is added. One overload is the "legacy"
one, that will honor the pre-existing semantics of negative `from`. The
new overload does NOT take a `from` parameter at all, and will actually
match from the truly end (by simply calling `lastIndexOf(~~~, size())`
internally).
These overloads are offered for all the existing lastIndexOf()
overloads, not only the ones taking QRE.
This means that code simply using `lastIndexOf` without any `from`
parameter get the "correct" behavior for 0-length matches, and code that
specifies one gets the legacy behavior. Matches of length > 0 are not
affected anyways, as they can't match at position size().
[ChangeLog][Important Behavior Changes] A regression in the behavior of
the lastIndexOf() function on text-related containers and views
(QString, QStringView, QByteArray, QByteArrayView, QLatin1String) has
been fixed, and the behavior made consistent and more in line with
user expectations. When lastIndexOf() is invoked with a negative `from`
position, the last match has now to start at the last character in the
container/view (before, it was at the position *past* the last
character). This makes a difference when using lastIndexOf() with a
needle that has 0 length (for instance an empty string, a regular
expression that can match 0 characters, and so on); any other case is
unaffected. To retrieve the "truly last" match, one can pass a
positive `from` offset to lastIndexOf() (basically, pass `size()` as the
`from` parameter). To make calls such as `text.lastIndexOf(~~~);`, that
do not pass any `from` parameter, behave properly, a new lastIndexOf()
overload has been added to all the text containers/views. This overload
does not take a `from` parameter at all, and will search starting from
one character past the end of the text, therefore returning a correct
result when used with needles that may yield 0-length matches. Client
code may need to be recompiled in order to use this new overload.
Conversely, client code that needs to skip the "truly last" match now
needs to pass -1 as the `from` parameter instead of relying on the
default.
Change-Id: I5e92bdcf1a57c2c3cca97b6adccf0883d00a92e5
Fixes: QTBUG-94215
Pick-to: 6.2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-06-08 14:44:26 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {search}
|
QS(V)/QBA(V)/QL1S::lastIndexOf: fix the offset calculations
When trying to fix 0-length matches at the end of a QString,
be83ff65c424cff1036e7da19d6175826d9f7ed9 actually introduced a
regression due to how lastIndexOf interprets its `from` parameter.
The "established" (=legacy) interpretation of a negative `from` is that
it is supposed to indicate that we want the last match at offset `from +
size()`. With the default from of -1, that means we want a match
starting at most at position `size() - 1` inclusive, i.e. *at* the last
position in the string. The aforementioned commit changed that, by
allowing a match at position `size()` instead, and this behavioral
change broke code.
The problem the commit tried to fix was that empty matches *are* allowed
to happen at position size(): the last match of regexp // inside the
string "test" is indeed at position 4 (the regexp matches 5 times).
Changing the meaning of negative from to include that last position (in
general: to include position `from+size()+1` as the last valid matching
position, in case of a negative `from`) has unfortunately broken client
code. Therefore, we need to revert it. This patch does that, adapting
the tests as necessary (drive-by: a broken #undef is removed).
Reverting the patch however is not sufficient. What we are facing here
is an historical API mistake that forces the default `from` (-1) to
*skip* the truly last possible match; the mistake is that thre is simply
no way to pass a negative `from` and obtain that match. This means that
the revert will now cause code like this:
str.lastIndexOf(QRE("")); // `from` defaulted to -1
NOT to return str.size(), which is counter-intuitive and wrong. Other
APIs expose this inconsistency: for instance, using
QRegularExpressionIterator would actually yield a last match at position
str.size(). Similarly, using QString::count would return `str.size()+1`.
Note that, in general, it's still possible for clients to call
str.lastIndexOf(~~~, str.size())
to get the "truly last" match.
This patch also tries to fix this case ("have our cake and eat it").
First and foremost, a couple of bugs in QByteArray and QString code are
fixed (when dealing with 0-length needles).
Second, a lastIndexOf overload is added. One overload is the "legacy"
one, that will honor the pre-existing semantics of negative `from`. The
new overload does NOT take a `from` parameter at all, and will actually
match from the truly end (by simply calling `lastIndexOf(~~~, size())`
internally).
These overloads are offered for all the existing lastIndexOf()
overloads, not only the ones taking QRE.
This means that code simply using `lastIndexOf` without any `from`
parameter get the "correct" behavior for 0-length matches, and code that
specifies one gets the legacy behavior. Matches of length > 0 are not
affected anyways, as they can't match at position size().
[ChangeLog][Important Behavior Changes] A regression in the behavior of
the lastIndexOf() function on text-related containers and views
(QString, QStringView, QByteArray, QByteArrayView, QLatin1String) has
been fixed, and the behavior made consistent and more in line with
user expectations. When lastIndexOf() is invoked with a negative `from`
position, the last match has now to start at the last character in the
container/view (before, it was at the position *past* the last
character). This makes a difference when using lastIndexOf() with a
needle that has 0 length (for instance an empty string, a regular
expression that can match 0 characters, and so on); any other case is
unaffected. To retrieve the "truly last" match, one can pass a
positive `from` offset to lastIndexOf() (basically, pass `size()` as the
`from` parameter). To make calls such as `text.lastIndexOf(~~~);`, that
do not pass any `from` parameter, behave properly, a new lastIndexOf()
overload has been added to all the text containers/views. This overload
does not take a `from` parameter at all, and will search starting from
one character past the end of the text, therefore returning a correct
result when used with needles that may yield 0-length matches. Client
code may need to be recompiled in order to use this new overload.
Conversely, client code that needs to skip the "truly last" match now
needs to pass -1 as the `from` parameter instead of relying on the
default.
Change-Id: I5e92bdcf1a57c2c3cca97b6adccf0883d00a92e5
Fixes: QTBUG-94215
Pick-to: 6.2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-06-08 14:44:26 +00:00
|
|
|
|
2019-04-02 13:24:44 +00:00
|
|
|
\sa QString::lastIndexOf()
|
|
|
|
*/
|
|
|
|
|
2021-12-01 16:37:59 +00:00
|
|
|
/*!
|
|
|
|
\fn QStringView::lastIndexOf(QChar c, Qt::CaseSensitivity cs) const
|
|
|
|
\since 6.3
|
|
|
|
\overload lastIndexOf()
|
|
|
|
*/
|
|
|
|
|
2020-12-02 11:31:41 +00:00
|
|
|
#if QT_CONFIG(regularexpression)
|
|
|
|
/*!
|
|
|
|
\fn qsizetype QStringView::indexOf(const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch) const
|
|
|
|
\since 6.1
|
|
|
|
|
|
|
|
Returns the index position of the first match of the regular
|
|
|
|
expression \a re in the string view, searching forward from index
|
|
|
|
position \a from. Returns -1 if \a re didn't match anywhere.
|
|
|
|
|
|
|
|
If the match is successful and \a rmatch is not \nullptr, it also
|
|
|
|
writes the results of the match into the QRegularExpressionMatch object
|
|
|
|
pointed to by \a rmatch.
|
|
|
|
|
|
|
|
\note Due to how the regular expression matching algorithm works,
|
|
|
|
this function will actually match repeatedly from the beginning of
|
|
|
|
the string view until the position \a from is reached.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn qsizetype QStringView::lastIndexOf(const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch) const
|
|
|
|
\since 6.1
|
|
|
|
|
QS(V)/QBA(V)/QL1S::lastIndexOf: fix the offset calculations
When trying to fix 0-length matches at the end of a QString,
be83ff65c424cff1036e7da19d6175826d9f7ed9 actually introduced a
regression due to how lastIndexOf interprets its `from` parameter.
The "established" (=legacy) interpretation of a negative `from` is that
it is supposed to indicate that we want the last match at offset `from +
size()`. With the default from of -1, that means we want a match
starting at most at position `size() - 1` inclusive, i.e. *at* the last
position in the string. The aforementioned commit changed that, by
allowing a match at position `size()` instead, and this behavioral
change broke code.
The problem the commit tried to fix was that empty matches *are* allowed
to happen at position size(): the last match of regexp // inside the
string "test" is indeed at position 4 (the regexp matches 5 times).
Changing the meaning of negative from to include that last position (in
general: to include position `from+size()+1` as the last valid matching
position, in case of a negative `from`) has unfortunately broken client
code. Therefore, we need to revert it. This patch does that, adapting
the tests as necessary (drive-by: a broken #undef is removed).
Reverting the patch however is not sufficient. What we are facing here
is an historical API mistake that forces the default `from` (-1) to
*skip* the truly last possible match; the mistake is that thre is simply
no way to pass a negative `from` and obtain that match. This means that
the revert will now cause code like this:
str.lastIndexOf(QRE("")); // `from` defaulted to -1
NOT to return str.size(), which is counter-intuitive and wrong. Other
APIs expose this inconsistency: for instance, using
QRegularExpressionIterator would actually yield a last match at position
str.size(). Similarly, using QString::count would return `str.size()+1`.
Note that, in general, it's still possible for clients to call
str.lastIndexOf(~~~, str.size())
to get the "truly last" match.
This patch also tries to fix this case ("have our cake and eat it").
First and foremost, a couple of bugs in QByteArray and QString code are
fixed (when dealing with 0-length needles).
Second, a lastIndexOf overload is added. One overload is the "legacy"
one, that will honor the pre-existing semantics of negative `from`. The
new overload does NOT take a `from` parameter at all, and will actually
match from the truly end (by simply calling `lastIndexOf(~~~, size())`
internally).
These overloads are offered for all the existing lastIndexOf()
overloads, not only the ones taking QRE.
This means that code simply using `lastIndexOf` without any `from`
parameter get the "correct" behavior for 0-length matches, and code that
specifies one gets the legacy behavior. Matches of length > 0 are not
affected anyways, as they can't match at position size().
[ChangeLog][Important Behavior Changes] A regression in the behavior of
the lastIndexOf() function on text-related containers and views
(QString, QStringView, QByteArray, QByteArrayView, QLatin1String) has
been fixed, and the behavior made consistent and more in line with
user expectations. When lastIndexOf() is invoked with a negative `from`
position, the last match has now to start at the last character in the
container/view (before, it was at the position *past* the last
character). This makes a difference when using lastIndexOf() with a
needle that has 0 length (for instance an empty string, a regular
expression that can match 0 characters, and so on); any other case is
unaffected. To retrieve the "truly last" match, one can pass a
positive `from` offset to lastIndexOf() (basically, pass `size()` as the
`from` parameter). To make calls such as `text.lastIndexOf(~~~);`, that
do not pass any `from` parameter, behave properly, a new lastIndexOf()
overload has been added to all the text containers/views. This overload
does not take a `from` parameter at all, and will search starting from
one character past the end of the text, therefore returning a correct
result when used with needles that may yield 0-length matches. Client
code may need to be recompiled in order to use this new overload.
Conversely, client code that needs to skip the "truly last" match now
needs to pass -1 as the `from` parameter instead of relying on the
default.
Change-Id: I5e92bdcf1a57c2c3cca97b6adccf0883d00a92e5
Fixes: QTBUG-94215
Pick-to: 6.2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-06-08 14:44:26 +00:00
|
|
|
Returns the index position of the last match of the regular
|
|
|
|
expression \a re in the string view, which starts before the index
|
2022-12-29 16:31:59 +00:00
|
|
|
position \a from.
|
|
|
|
|
|
|
|
\include qstring.qdocinc negative-index-start-search-from-end
|
|
|
|
|
|
|
|
Returns -1 if \a re didn't match anywhere.
|
QS(V)/QBA(V)/QL1S::lastIndexOf: fix the offset calculations
When trying to fix 0-length matches at the end of a QString,
be83ff65c424cff1036e7da19d6175826d9f7ed9 actually introduced a
regression due to how lastIndexOf interprets its `from` parameter.
The "established" (=legacy) interpretation of a negative `from` is that
it is supposed to indicate that we want the last match at offset `from +
size()`. With the default from of -1, that means we want a match
starting at most at position `size() - 1` inclusive, i.e. *at* the last
position in the string. The aforementioned commit changed that, by
allowing a match at position `size()` instead, and this behavioral
change broke code.
The problem the commit tried to fix was that empty matches *are* allowed
to happen at position size(): the last match of regexp // inside the
string "test" is indeed at position 4 (the regexp matches 5 times).
Changing the meaning of negative from to include that last position (in
general: to include position `from+size()+1` as the last valid matching
position, in case of a negative `from`) has unfortunately broken client
code. Therefore, we need to revert it. This patch does that, adapting
the tests as necessary (drive-by: a broken #undef is removed).
Reverting the patch however is not sufficient. What we are facing here
is an historical API mistake that forces the default `from` (-1) to
*skip* the truly last possible match; the mistake is that thre is simply
no way to pass a negative `from` and obtain that match. This means that
the revert will now cause code like this:
str.lastIndexOf(QRE("")); // `from` defaulted to -1
NOT to return str.size(), which is counter-intuitive and wrong. Other
APIs expose this inconsistency: for instance, using
QRegularExpressionIterator would actually yield a last match at position
str.size(). Similarly, using QString::count would return `str.size()+1`.
Note that, in general, it's still possible for clients to call
str.lastIndexOf(~~~, str.size())
to get the "truly last" match.
This patch also tries to fix this case ("have our cake and eat it").
First and foremost, a couple of bugs in QByteArray and QString code are
fixed (when dealing with 0-length needles).
Second, a lastIndexOf overload is added. One overload is the "legacy"
one, that will honor the pre-existing semantics of negative `from`. The
new overload does NOT take a `from` parameter at all, and will actually
match from the truly end (by simply calling `lastIndexOf(~~~, size())`
internally).
These overloads are offered for all the existing lastIndexOf()
overloads, not only the ones taking QRE.
This means that code simply using `lastIndexOf` without any `from`
parameter get the "correct" behavior for 0-length matches, and code that
specifies one gets the legacy behavior. Matches of length > 0 are not
affected anyways, as they can't match at position size().
[ChangeLog][Important Behavior Changes] A regression in the behavior of
the lastIndexOf() function on text-related containers and views
(QString, QStringView, QByteArray, QByteArrayView, QLatin1String) has
been fixed, and the behavior made consistent and more in line with
user expectations. When lastIndexOf() is invoked with a negative `from`
position, the last match has now to start at the last character in the
container/view (before, it was at the position *past* the last
character). This makes a difference when using lastIndexOf() with a
needle that has 0 length (for instance an empty string, a regular
expression that can match 0 characters, and so on); any other case is
unaffected. To retrieve the "truly last" match, one can pass a
positive `from` offset to lastIndexOf() (basically, pass `size()` as the
`from` parameter). To make calls such as `text.lastIndexOf(~~~);`, that
do not pass any `from` parameter, behave properly, a new lastIndexOf()
overload has been added to all the text containers/views. This overload
does not take a `from` parameter at all, and will search starting from
one character past the end of the text, therefore returning a correct
result when used with needles that may yield 0-length matches. Client
code may need to be recompiled in order to use this new overload.
Conversely, client code that needs to skip the "truly last" match now
needs to pass -1 as the `from` parameter instead of relying on the
default.
Change-Id: I5e92bdcf1a57c2c3cca97b6adccf0883d00a92e5
Fixes: QTBUG-94215
Pick-to: 6.2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-06-08 14:44:26 +00:00
|
|
|
|
|
|
|
If the match is successful and \a rmatch is not \nullptr, it also
|
|
|
|
writes the results of the match into the QRegularExpressionMatch object
|
|
|
|
pointed to by \a rmatch.
|
|
|
|
|
|
|
|
\note Due to how the regular expression matching algorithm works,
|
|
|
|
this function will actually match repeatedly from the beginning of
|
|
|
|
the string view until the position \a from is reached.
|
|
|
|
|
|
|
|
\note When searching for a regular expression \a re that may match
|
|
|
|
0 characters, the match at the end of the data is excluded from the
|
|
|
|
search by a negative \a from, even though \c{-1} is normally
|
|
|
|
thought of as searching from the end of the string view: the match
|
|
|
|
at the end is \e after the last character, so it is excluded. To
|
|
|
|
include such a final empty match, either give a positive value for
|
|
|
|
\a from or omit the \a from parameter entirely.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn qsizetype QStringView::lastIndexOf(const QRegularExpression &re, QRegularExpressionMatch *rmatch = nullptr) const
|
|
|
|
\since 6.2
|
|
|
|
|
2020-12-02 11:31:41 +00:00
|
|
|
Returns the index position of the last match of the regular
|
2021-09-03 13:36:50 +00:00
|
|
|
expression \a re in the string view. Returns -1 if \a re didn't match
|
|
|
|
anywhere.
|
2020-12-02 11:31:41 +00:00
|
|
|
|
|
|
|
If the match is successful and \a rmatch is not \nullptr, it also
|
|
|
|
writes the results of the match into the QRegularExpressionMatch object
|
|
|
|
pointed to by \a rmatch.
|
QS(V)/QBA(V)/QL1S::lastIndexOf: fix the offset calculations
When trying to fix 0-length matches at the end of a QString,
be83ff65c424cff1036e7da19d6175826d9f7ed9 actually introduced a
regression due to how lastIndexOf interprets its `from` parameter.
The "established" (=legacy) interpretation of a negative `from` is that
it is supposed to indicate that we want the last match at offset `from +
size()`. With the default from of -1, that means we want a match
starting at most at position `size() - 1` inclusive, i.e. *at* the last
position in the string. The aforementioned commit changed that, by
allowing a match at position `size()` instead, and this behavioral
change broke code.
The problem the commit tried to fix was that empty matches *are* allowed
to happen at position size(): the last match of regexp // inside the
string "test" is indeed at position 4 (the regexp matches 5 times).
Changing the meaning of negative from to include that last position (in
general: to include position `from+size()+1` as the last valid matching
position, in case of a negative `from`) has unfortunately broken client
code. Therefore, we need to revert it. This patch does that, adapting
the tests as necessary (drive-by: a broken #undef is removed).
Reverting the patch however is not sufficient. What we are facing here
is an historical API mistake that forces the default `from` (-1) to
*skip* the truly last possible match; the mistake is that thre is simply
no way to pass a negative `from` and obtain that match. This means that
the revert will now cause code like this:
str.lastIndexOf(QRE("")); // `from` defaulted to -1
NOT to return str.size(), which is counter-intuitive and wrong. Other
APIs expose this inconsistency: for instance, using
QRegularExpressionIterator would actually yield a last match at position
str.size(). Similarly, using QString::count would return `str.size()+1`.
Note that, in general, it's still possible for clients to call
str.lastIndexOf(~~~, str.size())
to get the "truly last" match.
This patch also tries to fix this case ("have our cake and eat it").
First and foremost, a couple of bugs in QByteArray and QString code are
fixed (when dealing with 0-length needles).
Second, a lastIndexOf overload is added. One overload is the "legacy"
one, that will honor the pre-existing semantics of negative `from`. The
new overload does NOT take a `from` parameter at all, and will actually
match from the truly end (by simply calling `lastIndexOf(~~~, size())`
internally).
These overloads are offered for all the existing lastIndexOf()
overloads, not only the ones taking QRE.
This means that code simply using `lastIndexOf` without any `from`
parameter get the "correct" behavior for 0-length matches, and code that
specifies one gets the legacy behavior. Matches of length > 0 are not
affected anyways, as they can't match at position size().
[ChangeLog][Important Behavior Changes] A regression in the behavior of
the lastIndexOf() function on text-related containers and views
(QString, QStringView, QByteArray, QByteArrayView, QLatin1String) has
been fixed, and the behavior made consistent and more in line with
user expectations. When lastIndexOf() is invoked with a negative `from`
position, the last match has now to start at the last character in the
container/view (before, it was at the position *past* the last
character). This makes a difference when using lastIndexOf() with a
needle that has 0 length (for instance an empty string, a regular
expression that can match 0 characters, and so on); any other case is
unaffected. To retrieve the "truly last" match, one can pass a
positive `from` offset to lastIndexOf() (basically, pass `size()` as the
`from` parameter). To make calls such as `text.lastIndexOf(~~~);`, that
do not pass any `from` parameter, behave properly, a new lastIndexOf()
overload has been added to all the text containers/views. This overload
does not take a `from` parameter at all, and will search starting from
one character past the end of the text, therefore returning a correct
result when used with needles that may yield 0-length matches. Client
code may need to be recompiled in order to use this new overload.
Conversely, client code that needs to skip the "truly last" match now
needs to pass -1 as the `from` parameter instead of relying on the
default.
Change-Id: I5e92bdcf1a57c2c3cca97b6adccf0883d00a92e5
Fixes: QTBUG-94215
Pick-to: 6.2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-06-08 14:44:26 +00:00
|
|
|
|
|
|
|
\note Due to how the regular expression matching algorithm works,
|
|
|
|
this function will actually match repeatedly from the beginning of
|
|
|
|
the string view until the end of the string view is reached.
|
2020-12-02 11:31:41 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn bool QStringView::contains(const QRegularExpression &re, QRegularExpressionMatch *rmatch) const
|
|
|
|
\since 6.1
|
|
|
|
|
|
|
|
Returns \c true if the regular expression \a re matches somewhere in this
|
|
|
|
string view; otherwise returns \c false.
|
|
|
|
|
|
|
|
If the match is successful and \a rmatch is not \nullptr, it also
|
|
|
|
writes the results of the match into the QRegularExpressionMatch object
|
|
|
|
pointed to by \a rmatch.
|
|
|
|
|
|
|
|
\sa QRegularExpression::match()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn qsizetype QStringView::count(const QRegularExpression &re) const
|
|
|
|
\since 6.1
|
|
|
|
|
|
|
|
Returns the number of times the regular expression \a re matches
|
|
|
|
in the string view.
|
|
|
|
|
|
|
|
For historical reasons, this function counts overlapping matches.
|
|
|
|
This behavior is different from simply iterating over the matches
|
2021-08-13 14:22:38 +00:00
|
|
|
in the string view using QRegularExpressionMatchIterator.
|
2020-12-02 11:31:41 +00:00
|
|
|
|
|
|
|
\sa QRegularExpression::globalMatch()
|
|
|
|
|
|
|
|
*/
|
|
|
|
#endif // QT_CONFIG(regularexpression)
|
|
|
|
|
2017-04-04 22:07:09 +00:00
|
|
|
/*!
|
|
|
|
\fn QByteArray QStringView::toLatin1() const
|
|
|
|
|
|
|
|
Returns a Latin-1 representation of the string as a QByteArray.
|
|
|
|
|
|
|
|
The behavior is undefined if the string contains non-Latin1 characters.
|
|
|
|
|
2020-04-30 13:15:56 +00:00
|
|
|
\sa toUtf8(), toLocal8Bit(), QStringEncoder
|
2017-04-04 22:07:09 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QByteArray QStringView::toLocal8Bit() const
|
|
|
|
|
|
|
|
Returns a local 8-bit representation of the string as a QByteArray.
|
|
|
|
|
2020-04-30 13:15:56 +00:00
|
|
|
On Unix systems this is equivalen to toUtf8(), on Windows the systems
|
|
|
|
current code page is being used.
|
2017-04-04 22:07:09 +00:00
|
|
|
|
|
|
|
The behavior is undefined if the string contains characters not
|
|
|
|
supported by the locale's 8-bit encoding.
|
|
|
|
|
2020-04-30 13:15:56 +00:00
|
|
|
\sa toLatin1(), toUtf8(), QStringEncoder
|
2017-04-04 22:07:09 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn QByteArray QStringView::toUtf8() const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns a UTF-8 representation of the string view as a QByteArray.
|
2017-04-04 22:07:09 +00:00
|
|
|
|
|
|
|
UTF-8 is a Unicode codec and can represent all characters in a Unicode
|
|
|
|
string like QString.
|
|
|
|
|
2020-04-30 13:15:56 +00:00
|
|
|
\sa toLatin1(), toLocal8Bit(), QStringEncoder
|
2017-04-04 22:07:09 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2020-06-26 06:21:15 +00:00
|
|
|
\fn QList<uint> QStringView::toUcs4() const
|
2017-04-04 22:07:09 +00:00
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns a UCS-4/UTF-32 representation of the string view as a QList<uint>.
|
2017-04-04 22:07:09 +00:00
|
|
|
|
|
|
|
UCS-4 is a Unicode codec and therefore it is lossless. All characters from
|
2021-08-13 14:22:38 +00:00
|
|
|
this string view will be encoded in UCS-4. Any invalid sequence of code units in
|
|
|
|
this string view is replaced by the Unicode replacement character
|
2017-04-04 22:07:09 +00:00
|
|
|
(QChar::ReplacementCharacter, which corresponds to \c{U+FFFD}).
|
|
|
|
|
2020-06-26 06:21:15 +00:00
|
|
|
The returned list is not 0-terminated.
|
2017-04-04 22:07:09 +00:00
|
|
|
|
2020-04-30 13:15:56 +00:00
|
|
|
\sa toUtf8(), toLatin1(), toLocal8Bit(), QStringEncoder
|
2017-04-04 22:07:09 +00:00
|
|
|
*/
|
|
|
|
|
2017-04-12 07:52:24 +00:00
|
|
|
/*!
|
2018-01-04 10:23:37 +00:00
|
|
|
\fn template <typename QStringLike> qToStringViewIgnoringNull(const QStringLike &s);
|
2017-04-12 07:52:24 +00:00
|
|
|
\since 5.10
|
|
|
|
\internal
|
|
|
|
|
|
|
|
Convert \a s to a QStringView ignoring \c{s.isNull()}.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns a string view that references \a{s}' data, but is never null.
|
2017-04-12 07:52:24 +00:00
|
|
|
|
2020-08-12 11:16:27 +00:00
|
|
|
This is a faster way to convert a QString to a QStringView,
|
2017-04-12 07:52:24 +00:00
|
|
|
if null QStrings can legitimately be treated as empty ones.
|
|
|
|
|
2020-08-12 11:16:27 +00:00
|
|
|
\sa QString::isNull(), QStringView
|
2017-04-12 07:52:24 +00:00
|
|
|
*/
|
|
|
|
|
2017-12-11 12:17:03 +00:00
|
|
|
/*!
|
2018-01-04 10:23:37 +00:00
|
|
|
\fn bool QStringView::isRightToLeft() const
|
2017-12-11 12:17:03 +00:00
|
|
|
\since 5.11
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns \c true if the string view is read right to left.
|
2017-12-11 12:17:03 +00:00
|
|
|
|
|
|
|
\sa QString::isRightToLeft()
|
|
|
|
*/
|
|
|
|
|
2019-12-18 19:23:11 +00:00
|
|
|
/*!
|
|
|
|
\fn bool QStringView::isValidUtf16() const
|
|
|
|
\since 5.15
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns \c true if the string view contains valid UTF-16 encoded data,
|
2019-12-18 19:23:11 +00:00
|
|
|
or \c false otherwise.
|
|
|
|
|
|
|
|
Note that this function does not perform any special validation of the
|
|
|
|
data; it merely checks if it can be successfully decoded from UTF-16.
|
|
|
|
The data is assumed to be in host byte order; the presence of a BOM
|
|
|
|
is meaningless.
|
|
|
|
|
|
|
|
\sa QString::isValidUtf16()
|
|
|
|
*/
|
|
|
|
|
2023-10-18 15:17:13 +00:00
|
|
|
/*!
|
|
|
|
\fn bool QStringView::isLower() const
|
|
|
|
\since 6.7
|
|
|
|
Returns \c true if this view is identical to its lowercase folding.
|
|
|
|
|
|
|
|
Note that this does \e not mean that the string view does not contain
|
|
|
|
uppercase letters (some uppercase letters do not have a lowercase
|
|
|
|
folding; they are left unchanged by toString().toLower()).
|
|
|
|
For more information, refer to the Unicode standard, section 3.13.
|
|
|
|
|
|
|
|
\sa QChar::toLower(), isUpper()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn bool QStringView::isUpper() const
|
|
|
|
\since 6.7
|
|
|
|
Returns \c true if this view is identical to its uppercase folding.
|
|
|
|
|
|
|
|
Note that this does \e not mean that the the string view does not contain
|
|
|
|
lowercase letters (some lowercase letters do not have a uppercase
|
|
|
|
folding; they are left unchanged by toString().toUpper()).
|
|
|
|
For more information, refer to the Unicode standard, section 3.13.
|
|
|
|
|
|
|
|
\sa QChar::toUpper(), isLower()
|
|
|
|
*/
|
|
|
|
|
2019-03-06 13:22:06 +00:00
|
|
|
/*!
|
2019-07-27 08:06:59 +00:00
|
|
|
\fn QStringView::toWCharArray(wchar_t *array) const
|
2019-03-06 13:22:06 +00:00
|
|
|
\since 5.14
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Transcribes this string view into the given \a array.
|
2019-03-06 13:22:06 +00:00
|
|
|
|
2019-07-27 08:06:59 +00:00
|
|
|
The caller is responsible for ensuring \a array is large enough to hold the
|
2021-08-13 14:22:38 +00:00
|
|
|
\c wchar_t encoding of this string view (allocating the array with the same length
|
|
|
|
as the string view is always sufficient). The array is encoded in UTF-16 on
|
2019-05-17 13:37:45 +00:00
|
|
|
platforms where \c wchar_t is 2 bytes wide (e.g. Windows); otherwise (Unix
|
|
|
|
systems), \c wchar_t is assumed to be 4 bytes wide and the data is written
|
2019-03-06 13:22:06 +00:00
|
|
|
in UCS-4.
|
|
|
|
|
|
|
|
\note This function writes no null terminator to the end of \a array.
|
|
|
|
|
2019-05-17 13:37:45 +00:00
|
|
|
Returns the number of \c wchar_t entries written to \a array.
|
2019-03-06 13:22:06 +00:00
|
|
|
|
|
|
|
\sa QString::toWCharArray()
|
|
|
|
*/
|
|
|
|
|
2020-05-22 07:57:33 +00:00
|
|
|
/*!
|
|
|
|
\fn qsizetype QStringView::count(QChar ch, Qt::CaseSensitivity cs) const noexcept
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
\overload count()
|
|
|
|
|
|
|
|
Returns the number of occurrences of the character \a ch in the
|
2021-08-13 14:22:38 +00:00
|
|
|
string view.
|
2020-05-22 07:57:33 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {search}
|
2020-05-22 07:57:33 +00:00
|
|
|
|
|
|
|
\sa QString::count(), contains(), indexOf()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn qsizetype QStringView::count(QStringView str, Qt::CaseSensitivity cs) const noexcept
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
\overload count()
|
|
|
|
|
|
|
|
Returns the number of (potentially overlapping) occurrences of the
|
2021-08-13 14:22:38 +00:00
|
|
|
string view \a str in this string view.
|
2020-05-22 07:57:33 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {search}
|
2022-03-03 16:36:49 +00:00
|
|
|
|
|
|
|
\sa QString::count(), contains(), indexOf()
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
2022-03-09 20:26:01 +00:00
|
|
|
\fn qsizetype QStringView::count(QLatin1StringView l1, Qt::CaseSensitivity cs) const noexcept
|
2022-03-03 16:36:49 +00:00
|
|
|
|
|
|
|
\since 6.4
|
|
|
|
\overload count()
|
|
|
|
|
|
|
|
Returns the number of (potentially overlapping) occurrences of the
|
2022-12-15 15:39:18 +00:00
|
|
|
Latin-1 string viewed by \a l1 in this string view.
|
2022-03-03 16:36:49 +00:00
|
|
|
|
2022-12-29 16:31:59 +00:00
|
|
|
\include qstring.qdocinc {search-comparison-case-sensitivity} {search}
|
2020-05-22 07:57:33 +00:00
|
|
|
|
|
|
|
\sa QString::count(), contains(), indexOf()
|
|
|
|
*/
|
|
|
|
|
2019-12-06 11:03:25 +00:00
|
|
|
/*!
|
|
|
|
\fn qint64 QStringView::toLongLong(bool *ok, int base) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to a \c{long long} using base \a
|
2019-12-06 11:03:25 +00:00
|
|
|
base, which is 10 by default and must be between 2 and 36, or 0.
|
|
|
|
Returns 0 if the conversion fails.
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
If \a base is 0, the C language convention is used: if the string view
|
|
|
|
begins with "0x", base 16 is used; otherwise, if the string view begins with "0",
|
2019-12-06 11:03:25 +00:00
|
|
|
base 8 is used; otherwise, base 10 is used.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toLongLong()
|
|
|
|
|
|
|
|
\sa QString::toLongLong()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn quint64 QStringView::toULongLong(bool *ok, int base) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to an \c{unsigned long long} using base \a
|
2019-12-06 11:03:25 +00:00
|
|
|
base, which is 10 by default and must be between 2 and 36, or 0.
|
|
|
|
Returns 0 if the conversion fails.
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
If \a base is 0, the C language convention is used: if the string view
|
|
|
|
begins with "0x", base 16 is used; otherwise, if the string view begins with "0",
|
2019-12-06 11:03:25 +00:00
|
|
|
base 8 is used; otherwise, base 10 is used.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toULongLong()
|
|
|
|
|
|
|
|
\sa QString::toULongLong()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn long QStringView::toLong(bool *ok, int base) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to a \c long using base \a
|
2019-12-06 11:03:25 +00:00
|
|
|
base, which is 10 by default and must be between 2 and 36, or 0.
|
|
|
|
Returns 0 if the conversion fails.
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
If \a base is 0, the C language convention is used: if the string view
|
|
|
|
begins with "0x", base 16 is used; otherwise, if the string view begins with "0",
|
2019-12-06 11:03:25 +00:00
|
|
|
base 8 is used; otherwise, base 10 is used.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toLong()
|
|
|
|
|
|
|
|
\sa QString::toLong()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn ulong QStringView::toULong(bool *ok, int base) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to an \c{unsigned long} using base \a
|
2019-12-06 11:03:25 +00:00
|
|
|
base, which is 10 by default and must be between 2 and 36, or 0.
|
|
|
|
Returns 0 if the conversion fails.
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
If \a base is 0, the C language convention is used: if the string view
|
|
|
|
begins with "0x", base 16 is used; otherwise, if the string view begins with "0",
|
2019-12-06 11:03:25 +00:00
|
|
|
base 8 is used; otherwise, base 10 is used.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toULongLong()
|
|
|
|
|
|
|
|
\sa QString::toULong()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn int QStringView::toInt(bool *ok, int base) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to an \c int using base \a
|
2019-12-06 11:03:25 +00:00
|
|
|
base, which is 10 by default and must be between 2 and 36, or 0.
|
|
|
|
Returns 0 if the conversion fails.
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
If \a base is 0, the C language convention is used: if the string view
|
|
|
|
begins with "0x", base 16 is used; otherwise, if the string view begins with "0",
|
2019-12-06 11:03:25 +00:00
|
|
|
base 8 is used; otherwise, base 10 is used.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toInt()
|
|
|
|
|
|
|
|
\sa QString::toInt()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn uint QStringView::toUInt(bool *ok, int base) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to an \c{unsigned int} using base \a
|
2019-12-06 11:03:25 +00:00
|
|
|
base, which is 10 by default and must be between 2 and 36, or 0.
|
|
|
|
Returns 0 if the conversion fails.
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
If \a base is 0, the C language convention is used: if the string view
|
|
|
|
begins with "0x", base 16 is used; otherwise, if the string view begins with "0",
|
2019-12-06 11:03:25 +00:00
|
|
|
base 8 is used; otherwise, base 10 is used.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toUInt()
|
|
|
|
|
|
|
|
\sa QString::toUInt()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn short QStringView::toShort(bool *ok, int base) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to a \c short using base \a
|
2019-12-06 11:03:25 +00:00
|
|
|
base, which is 10 by default and must be between 2 and 36, or 0.
|
|
|
|
Returns 0 if the conversion fails.
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
If \a base is 0, the C language convention is used: if the string view
|
|
|
|
begins with "0x", base 16 is used; otherwise, if the string view begins with "0",
|
2019-12-06 11:03:25 +00:00
|
|
|
base 8 is used; otherwise, base 10 is used.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toShort()
|
|
|
|
|
|
|
|
\sa QString::toShort()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn ushort QStringView::toUShort(bool *ok, int base) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to an \c{unsigned short} using base \a
|
2019-12-06 11:03:25 +00:00
|
|
|
base, which is 10 by default and must be between 2 and 36, or 0.
|
|
|
|
Returns 0 if the conversion fails.
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
If \a base is 0, the C language convention is used: if the string view
|
|
|
|
begins with "0x", base 16 is used; otherwise, if the string view begins with "0",
|
2019-12-06 11:03:25 +00:00
|
|
|
base 8 is used; otherwise, base 10 is used.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toUShort()
|
|
|
|
|
|
|
|
\sa QString::toUShort()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn double QStringView::toDouble(bool *ok) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to a \c double value.
|
2019-12-06 11:03:25 +00:00
|
|
|
|
|
|
|
Returns an infinity if the conversion overflows or 0.0 if the
|
|
|
|
conversion fails for other reasons (e.g. underflow).
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toDouble()
|
|
|
|
|
|
|
|
For historic reasons, this function does not handle
|
|
|
|
thousands group separators. If you need to convert such numbers,
|
|
|
|
use QLocale::toDouble().
|
|
|
|
|
|
|
|
\sa QString::toDouble()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn float QStringView::toFloat(bool *ok) const
|
|
|
|
|
2021-08-13 14:22:38 +00:00
|
|
|
Returns the string view converted to a \c float value.
|
2019-12-06 11:03:25 +00:00
|
|
|
|
|
|
|
Returns an infinity if the conversion overflows or 0.0 if the
|
|
|
|
conversion fails for other reasons (e.g. underflow).
|
|
|
|
|
|
|
|
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
|
|
|
|
to \c false, and success by setting *\a{ok} to \c true.
|
|
|
|
|
|
|
|
The string conversion will always happen in the 'C' locale. For locale
|
|
|
|
dependent conversion use QLocale::toFloat()
|
|
|
|
|
|
|
|
\sa QString::toFloat()
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
*/
|
|
|
|
|
2020-04-01 13:28:29 +00:00
|
|
|
|
|
|
|
/*!
|
2020-09-25 13:24:58 +00:00
|
|
|
\fn template <typename Needle, typename...Flags> auto QStringView::tokenize(Needle &&sep, Flags...flags) const
|
2022-03-09 18:28:01 +00:00
|
|
|
\fn template <typename Needle, typename...Flags> auto QLatin1StringView::tokenize(Needle &&sep, Flags...flags) const
|
2020-09-25 13:24:58 +00:00
|
|
|
\fn template <typename Needle, typename...Flags> auto QString::tokenize(Needle &&sep, Flags...flags) const &
|
|
|
|
\fn template <typename Needle, typename...Flags> auto QString::tokenize(Needle &&sep, Flags...flags) const &&
|
|
|
|
\fn template <typename Needle, typename...Flags> auto QString::tokenize(Needle &&sep, Flags...flags) &&
|
2020-04-01 13:28:29 +00:00
|
|
|
|
|
|
|
Splits the string into substring views wherever \a sep occurs, and
|
|
|
|
returns a lazy sequence of those strings.
|
|
|
|
|
|
|
|
Equivalent to
|
|
|
|
|
|
|
|
\code
|
|
|
|
return QStringTokenizer{std::forward<Needle>(sep), flags...};
|
|
|
|
\endcode
|
|
|
|
|
|
|
|
except it works without C++17 Class Template Argument Deduction (CTAD)
|
|
|
|
enabled in the compiler.
|
|
|
|
|
|
|
|
See QStringTokenizer for how \a sep and \a flags interact to form
|
|
|
|
the result.
|
|
|
|
|
|
|
|
\note While this function returns QStringTokenizer, you should never,
|
|
|
|
ever, name its template arguments explicitly. If you can use C++17 Class
|
|
|
|
Template Argument Deduction (CTAD), you may write
|
|
|
|
\code
|
|
|
|
QStringTokenizer result = sv.tokenize(sep);
|
|
|
|
\endcode
|
|
|
|
(without template arguments). If you can't use C++17 CTAD, you must store
|
|
|
|
the return value only in \c{auto} variables:
|
|
|
|
\code
|
|
|
|
auto result = sv.tokenize(sep);
|
|
|
|
\endcode
|
|
|
|
This is because the template arguments of QStringTokenizer have a very
|
|
|
|
subtle dependency on the specific tokenize() overload from which they are
|
|
|
|
returned, and they don't usually correspond to the type used for the separator.
|
|
|
|
|
|
|
|
\since 6.0
|
|
|
|
\sa QStringTokenizer, qTokenize()
|
|
|
|
*/
|
|
|
|
|
String-like containers: add implicit conversions towards std:: string views
In C++20 std::basic_string_view has gained a range constructor (like
QStringView always had), but that range constructor has been made
explicit. This means we can't just pass a QString(View) to a function
taking a u16string_view. The consensus seems to be that that types that
should implictly convert towards stdlib's string views should do that
via implicit conversion operators. This patch adds them for
* QByteArrayView => std::string_view
* QString(View) => std::u16string_view
* QUtf8StringView => std::string_view or std::u8string_view, depending
on the storage_type
QLatin1StringView doesn't have a matching std:: view so I'm not enabling
its conversion.
QByteArray poses a challenge, in that it already defines a conversion
towards const char *. (One can disable that conversion with a macro.)
That conversion makes it impossible to support:
QByteArray ba;
std::string_view sv1(ba); // 1
std::string_view sv2 = ba; // 2
because:
* if only operator const char *() is defined, then (2) doesn't work
(situation right now);
* if both conversions to const char * and string_view are defined, then
(1) is ambiguous on certain compilers (MSVC, QCC). Interestingly
enough, not on GCC/Clang, but only in C++17 and later modes.
I can't kill the conversion towards const char * (API break, and we use
it *everywhere* in Qt), hence, QByteArray does not get the implicit
conversion, at least not in this patch.
[ChangeLog][QtCore][QByteArrayView] Added an implicit conversion
operator towards std::string_view.
[ChangeLog][QtCore][QString] Added an implicit conversion operator
towards std::u16string_view.
[ChangeLog][QtCore][QStringView] Added an implicit conversion operator
towards std::u16string_view.
[ChangeLog][QtCore][QUtf8StringView] Added an implicit conversion
operator towards std::string_view (QUtf8StringView is using char
as its storage type in Qt 6). Note that QUtf8StringView is planned to
use char8_t in Qt 7, therefore it is expected that the conversion will
change towards std::u8string_view in Qt 7.
Change-Id: I6d3b64d211a386241ae157765cd1b03f531f909a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-05-21 11:38:09 +00:00
|
|
|
/*!
|
|
|
|
\fn QStringView::operator std::u16string_view() const
|
|
|
|
\since 6.7
|
|
|
|
|
|
|
|
Converts this QStringView object to a \c{std::u16string_view} object.
|
|
|
|
The returned view will have the same data pointer and length of
|
|
|
|
this view.
|
|
|
|
*/
|
|
|
|
|
Long live QStringView!
QStringView is a simple container for (const QChar*, int) and (const
char16_t*, size_t). It acts as a replacement interface type for const
QString and const QStringRef, and enables passing all kinds of
string-like types to functions otherwise expecting const QString& -
without the need to convert to QString first.
The use of this new class is guarded by a macro that enables three
levels of QStringView support:
1. offer QStringView, overload some functions taking QString with
QStringView
2. like 1, but remove all overloads of functions taking QStringRef,
leaving only the function taking QStringView. Do this only where
QStringRef overloads tradionally existed.
3. like 2, but replace functions taking QString, too.
This is done in order to measure the impact of QStringView on code
size and execution speed, and to help guide the decision of which
level to choose for Qt 6.
This first patch adds QStringView with most of its planned
constructors, but not much more than iterators and isNull()/isEmpty().
Further patches will add support for QStringView to QStringBuilder,
add QStringView overloads of functions taking QString, and add the
complete API of const QString to QStringView.
[ChangeLog][QtCore][QStringView] New class, superseding const QString
and QStringRef as function parameters, accepting a wide variety of
UTF-16 string data sources, e.g. u"string", std::u16string{,_view},
and, on Windows, L"string", std::wstring{,_view} without converting to
QString first.
Change-Id: Iac273e46b2c61ec2c31b3dacebb29500599d6898
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2015-10-22 13:51:14 +00:00
|
|
|
QT_END_NAMESPACE
|