QtBase
v6.3.1
|
The QStringView class provides a unified view on UTF-16 strings with a read-only subset of the QString API. \reentrant. More...
#include <qstringview.h>
Public Types | |
typedef char16_t | storage_type |
typedef const QChar | value_type |
typedef std::ptrdiff_t | difference_type |
typedef qsizetype | size_type |
typedef value_type & | reference |
typedef value_type & | const_reference |
typedef value_type * | pointer |
typedef value_type * | const_pointer |
typedef pointer | iterator |
typedef const_pointer | const_iterator |
typedef std::reverse_iterator< iterator > | reverse_iterator |
typedef std::reverse_iterator< const_iterator > | const_reverse_iterator |
Static Public Member Functions | |
template<typename Char , size_t Size, if_compatible_char< Char > = true> | |
constexpr static QStringView | fromArray (const Char(&string)[Size]) noexcept |
The QStringView class provides a unified view on UTF-16 strings with a read-only subset of the QString API. \reentrant.
\inmodule QtCore
A QStringView references a contiguous portion of a UTF-16 string it does 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, std::basic_string, etc.) of QChar, ushort
, char16_t
or (on platforms, such as Windows, where it is a 16-bit type) wchar_t
.
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 thus replaces three function overloads (taking QString and {(const QChar*, int)}), while at the same time enabling even more string data sources to be passed to the function, such as
{u"Hello World"}, a
char16_t
string literal.
QStringViews should be passed by value, not by reference-to-const:
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
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.
QStringView is a {Literal Type}, but since it stores data as {char16_t}, iteration is not
constexpr
(casts from {const char16_t*} to
{const QChar*}, which is not allowed in
constexpr
functions). You can use an indexed loop and/or utf16() in constexpr
contexts instead.
Definition at line 121 of file qstringview.h.
This typedef provides an STL-style const iterator for QStringView.
Definition at line 134 of file qstringview.h.
Alias for {value_type *}. Provided for compatibility with the STL.
Definition at line 131 of file qstringview.h.
Alias for {value_type &}. Provided for compatibility with the STL.
Definition at line 129 of file qstringview.h.
This typedef provides an STL-style const reverse iterator for QStringView.
Definition at line 136 of file qstringview.h.
Alias for {std::ptrdiff_t}. Provided for compatibility with the STL.
Definition at line 126 of file qstringview.h.
This typedef provides an STL-style const iterator for QStringView.
QStringView does not support mutable iterators, so this is the same as const_iterator.
Definition at line 133 of file qstringview.h.
Alias for {value_type *}. Provided for compatibility with the STL.
QStringView does not support mutable pointers, so this is the same as const_pointer.
Definition at line 130 of file qstringview.h.
Alias for {value_type &}. Provided for compatibility with the STL.
QStringView does not support mutable references, so this is the same as const_reference.
Definition at line 128 of file qstringview.h.
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.
Definition at line 135 of file qstringview.h.
Alias for qsizetype. Provided for compatibility with the STL.
Definition at line 127 of file qstringview.h.
Alias for {char16_t}.
Definition at line 124 of file qstringview.h.
Alias for {const QChar}. Provided for compatibility with the STL.
Definition at line 125 of file qstringview.h.
|
inlineconstexprnoexcept |
Constructs a null string view.
Definition at line 189 of file qstringview.h.
|
inlineconstexprnoexcept |
|
inlineconstexpr |
Constructs a string view on str with length len.
The range {[str,len)} must remain valid for the lifetime of this string view object.
Passing \nullptr as str is safe if len is 0, too, and results in a null string view.
The behavior is undefined if len is negative or, when positive, if str is \nullptr.
This constructor only participates in overload resolution if Char
is a compatible character type. The compatible character types are: QChar
, ushort
, char16_t
and (on platforms, such as Windows, where it is a 16-bit type) wchar_t
.
Definition at line 195 of file qstringview.h.
|
inlineconstexpr |
Constructs a string view on first with length (last - first).
The range {[first,last)} must remain valid for the lifetime of this string view object.
Passing \nullptr
as first is safe if last is \nullptr, too, and results in a null string view.
The behavior is undefined if last precedes first, or first is \nullptr and last is not.
This constructor only participates in overload resolution if Char
is a compatible character type. The compatible character types are: QChar
, ushort
, char16_t
and (on platforms, such as Windows, where it is a 16-bit type) wchar_t
.
Definition at line 200 of file qstringview.h.
|
inlineconstexprnoexcept |
Definition at line 212 of file qstringview.h.
|
inlinenoexcept |
Definition at line 220 of file qstringview.h.
|
inlineconstexprnoexcept |
Definition at line 225 of file qstringview.h.
|
inline |
Returns the character at position n in this string view.
The behavior is undefined if n is negative or not less than size().
Definition at line 259 of file qstringview.h.
|
inlineconstexpr |
Returns the last character in the string view. Same as last().
This function is provided for STL compatibility.
Definition at line 455 of file qstringview.h.
|
inlinenoexcept |
Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the first character in the string view.
This function is provided for STL compatibility.
Definition at line 444 of file qstringview.h.
|
inlinenoexcept |
Same as begin().
This function is provided for STL compatibility.
Definition at line 446 of file qstringview.h.
|
inlinenoexcept |
Same as end().
This function is provided for STL compatibility.
Definition at line 447 of file qstringview.h.
Truncates this string view by length characters.
Same as {*this = left(size() - length)}.
Definition at line 293 of file qstringview.h.
|
inlineconstexprnoexcept |
Returns the substring of length size() - length starting at the beginning of this object.
Same as {left(size() - length)}.
Definition at line 288 of file qstringview.h.
|
inlineconstexprnoexcept |
|
inlinenoexcept |
Returns an integer that compares to zero as this string view compares to the Latin-1 string l1, or character ch, respectively.
If cs is Qt::CaseSensitive (the default), the comparison is case sensitive; otherwise the comparison is case-insensitive.
Definition at line 309 of file qstringview.h.
|
inlinenoexcept |
|
inlinenoexcept |
Returns an integer that compares to zero as this string view compares to the string view str.
If cs is Qt::CaseSensitive (the default), the comparison is case sensitive; otherwise the comparison is case-insensitive.
Definition at line 304 of file qstringview.h.
|
inlinenoexcept |
Same as begin().
Definition at line 460 of file qstringview.h.
Returns a const pointer to the first character in the string view.
Definition at line 241 of file qstringview.h.
|
inlinenoexcept |
Same as end().
Definition at line 461 of file qstringview.h.
|
inlinenoexcept |
Returns true
if this string view contains an occurrence of the string view str, Latin-1 string l1, or character ch; otherwise returns false
.
If cs is Qt::CaseSensitive (the default), the search is case-sensitive; otherwise the search is case-insensitive.
Definition at line 334 of file qstringview.h.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Returns a const pointer to the first character in the string view.
Definition at line 240 of file qstringview.h.
|
inlineconstexprnoexcept |
Returns whether this string view is empty - that is, whether {size() == 0}.
This function is provided for STL compatibility.
Definition at line 453 of file qstringview.h.
|
inlinenoexcept |
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.
Definition at line 445 of file qstringview.h.
|
inlinenoexcept |
|
inlinenoexcept |
Returns true
if this string view ends with string view str, Latin-1 string l1, or character ch, respectively; otherwise returns false
.
If cs is Qt::CaseSensitive (the default), the search is case-sensitive; otherwise the search is case-insensitive.
Definition at line 325 of file qstringview.h.
|
inlinenoexcept |
|
inlinenoexcept |
Definition at line 320 of file qstringview.h.
|
inlineconstexpr |
Returns the first character in the string view. Same as front().
This function is provided for compatibility with other Qt containers.
Definition at line 466 of file qstringview.h.
|
inlineconstexprnoexcept |
Returns a string view that points to the first n characters of this string view.
Definition at line 280 of file qstringview.h.
|
inlinestaticconstexprnoexcept |
Constructs a string view on the full character string literal string, including any trailing {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.
string must remain valid for the lifetime of this string view object.
This function will work with any array literal if Char
is a compatible character type. The compatible character types are: QChar
, ushort
, char16_t
and (on platforms, such as Windows, where it is a 16-bit type) wchar_t
.
Definition at line 229 of file qstringview.h.
|
inlineconstexpr |
Returns the first character in the string view. Same as first().
This function is provided for STL compatibility.
Definition at line 454 of file qstringview.h.
|
inlinenoexcept |
Returns the index position of the first occurrence of the string view str, Latin-1 string l1, or character ch, respectively, in this string view, searching forward from index position from. Returns -1 if str is not found.
If cs is Qt::CaseSensitive (default), the search is case sensitive; otherwise the search is case insensitive.
If from is -1, the search starts at the last character; if it is -2, at the next to last character and so on.
Definition at line 328 of file qstringview.h.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineconstexprnoexcept |
Returns whether this string view is empty - that is, whether {size() == 0}.
This function is provided for compatibility with other Qt containers.
Definition at line 463 of file qstringview.h.
|
inlineconstexprnoexcept |
|
inlinenoexcept |
Returns true
if the string view is read right to left.
Definition at line 385 of file qstringview.h.
|
inlinenoexcept |
Returns true
if the string view contains valid UTF-16 encoded data, or 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.
Definition at line 387 of file qstringview.h.
|
inlineconstexpr |
Returns the last character in the string view. Same as back().
This function is provided for compatibility with other Qt containers.
Definition at line 467 of file qstringview.h.
|
inlineconstexprnoexcept |
Returns a string view that points to the last n characters of this string view.
Definition at line 282 of file qstringview.h.
|
inlinenoexcept |
Returns the index position of the last occurrence of the string view str, Latin-1 string l1, or character ch, respectively, in this string view, searching backward from index position from. If from is -1, the search starts at the last character; if from is -2, at the next to last character and so on. Returns -1 if str is not found.
If cs is Qt::CaseSensitive (default), the search is case sensitive; otherwise the search is case insensitive.
{-1} is normally thought of as searching from the end of the string view: the match at the end is after the last character, so it is excluded. To include such a final empty match, either give a positive value for from or omit the from parameter entirely.Definition at line 347 of file qstringview.h.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineconstexprnoexcept |
Returns the substring of length length starting at position 0 in this object.
The entire string view is returned if length is greater than or equal to size(), or less than zero.
Definition at line 267 of file qstringview.h.
|
inlineconstexprnoexcept |
|
inlineconstexprnoexcept |
Returns the substring of length length starting at position start in this object.
Returns an empty string view if start exceeds the length of the string view. If there are less than length characters available in the string view starting at start, or if length is negative (default), the function returns all characters that are available from start.
Definition at line 261 of file qstringview.h.
|
inlinenoexcept |
Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing to the first character in the string view, in reverse order.
This function is provided for STL compatibility.
Definition at line 448 of file qstringview.h.
|
inlinenoexcept |
Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing to one past the last character in the string view, in reverse order.
This function is provided for STL compatibility.
Definition at line 449 of file qstringview.h.
|
inlineconstexprnoexcept |
Returns the substring of length length starting at position size() - length in this object.
The entire string view is returned if length is greater than or equal to size(), or less than zero.
Definition at line 273 of file qstringview.h.
|
inlineconstexprnoexcept |
|
inlineconstexprnoexcept |
Returns a string view starting at position pos in this object, and extending to its end.
Definition at line 284 of file qstringview.h.
|
inlineconstexprnoexcept |
Returns a string view that points to n characters of this string view, starting at position pos.
Definition at line 286 of file qstringview.h.
QList< QStringView > QStringView::split | ( | QChar | sep, |
Qt::SplitBehavior | behavior = Qt::KeepEmptyParts , |
||
Qt::CaseSensitivity | cs = Qt::CaseSensitive |
||
) | const |
QList< QStringView > QStringView::split | ( | QStringView | sep, |
Qt::SplitBehavior | behavior = Qt::KeepEmptyParts , |
||
Qt::CaseSensitivity | cs = Qt::CaseSensitive |
||
) | const |
Splits the string into substring views wherever sep occurs, and returns the list of those string views.
See QString::split() for how sep, behavior and cs interact to form the result.
Definition at line 7702 of file qstring.cpp.
|
inlinenoexcept |
|
inlinenoexcept |
Returns true
if this string view starts with string view str, Latin-1 string l1, or character ch, respectively; otherwise returns false
.
If cs is Qt::CaseSensitive (the default), the search is case-sensitive; otherwise the search is case-insensitive.
Definition at line 317 of file qstringview.h.
|
inlinenoexcept |
|
inlinenoexcept |
Definition at line 312 of file qstringview.h.
double QStringView::toDouble | ( | bool * | ok = nullptr | ) | const |
Returns the string view converted to a double
value.
Returns an infinity if the conversion overflows or 0.0 if the conversion fails for other reasons (e.g. underflow).
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to 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().
Definition at line 10801 of file qstring.cpp.
float QStringView::toFloat | ( | bool * | ok = nullptr | ) | const |
Returns the string view converted to a float
value.
Returns an infinity if the conversion overflows or 0.0 if the conversion fails for other reasons (e.g. underflow).
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to true
.
The string conversion will always happen in the 'C' locale. For locale dependent conversion use QLocale::toFloat()
Definition at line 10806 of file qstring.cpp.
|
inline |
Returns the string view converted to an int
using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to true
.
If 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", 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()
Definition at line 1176 of file qstring.h.
|
inlineconstexprnoexcept |
|
inline |
Returns a Latin-1 representation of the string as a QByteArray.
The behavior is undefined if the string contains non-Latin1 characters.
Definition at line 254 of file qstringview.h.
|
inline |
Returns a local 8-bit representation of the string as a QByteArray.
On Unix systems this is equivalen to toUtf8(), on Windows the systems current code page is being used.
The behavior is undefined if the string contains characters not supported by the locale's 8-bit encoding.
Definition at line 256 of file qstringview.h.
|
inline |
Returns the string view converted to a long
using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to true
.
If 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", 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()
Returns the string view converted to a {long long} using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to true
.
If 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", 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()
Definition at line 1168 of file qstring.h.
|
inline |
Returns the string view converted to a short
using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to true
.
If 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", 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()
Definition at line 1180 of file qstring.h.
|
inline |
Returns a UCS-4/UTF-32 representation of the string view as a QList<uint>.
UCS-4 is a Unicode codec and therefore it is lossless. All characters from 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 (QChar::ReplacementCharacter, which corresponds to {U+FFFD}).
The returned list is not 0-terminated.
Definition at line 1023 of file qlist.h.
Returns the string view converted to an {unsigned int} using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to true
.
If 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", 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()
Definition at line 1178 of file qstring.h.
Returns the string view converted to an {unsigned long} using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to true
.
If 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", 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()
Returns the string view converted to an {unsigned long long} using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to true
.
If 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", 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()
Returns the string view converted to an {unsigned short} using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If ok is not \nullptr, failure is reported by setting *{ok} to false
, and success by setting *{ok} to true
.
If 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", 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()
|
inline |
Returns a UTF-8 representation of the string view as a QByteArray.
UTF-8 is a Unicode codec and can represent all characters in a Unicode string like QString.
Definition at line 255 of file qstringview.h.
|
inline |
Transcribes this string view into the given array.
The caller is responsible for ensuring array is large enough to hold the 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 platforms where wchar_t
is 2 bytes wide (e.g. Windows); otherwise (Unix systems), wchar_t
is assumed to be 4 bytes wide and the data is written in UCS-4.
Returns the number of wchar_t
entries written to array.
|
inlinenoexcept |
Strips leading and trailing whitespace and returns the result.
Whitespace means any character for which QChar::isSpace() returns true
. This includes the ASCII characters '\t', '\n', '\v', '\f', '\r', and ' '.
Definition at line 296 of file qstringview.h.
|
inlineconstexprnoexcept |
Returns a const pointer to the first character in the string view.
{storage_type} is
{char16_t}.
Definition at line 242 of file qstringview.h.
|
related |
|
related |
|
related |
|
related |
|
related |
|
related |
|
related |
|
related |
Definition at line 1527 of file qstring.cpp.
|
related |
|
friend |
Definition at line 435 of file qstringview.h.
|
friend |
Definition at line 428 of file qstringview.h.
|
friend |
Definition at line 420 of file qstringview.h.
|
friend |
Definition at line 436 of file qstringview.h.
|
friend |
Definition at line 429 of file qstringview.h.
|
friend |
Definition at line 421 of file qstringview.h.
|
friend |
Definition at line 437 of file qstringview.h.
|
friend |
Definition at line 430 of file qstringview.h.
|
friend |
Definition at line 422 of file qstringview.h.
|
friend |
Definition at line 434 of file qstringview.h.
|
friend |
Definition at line 427 of file qstringview.h.
|
friend |
Definition at line 419 of file qstringview.h.
|
friend |
Definition at line 438 of file qstringview.h.
|
friend |
Definition at line 431 of file qstringview.h.
|
friend |
Definition at line 423 of file qstringview.h.
|
friend |
Definition at line 439 of file qstringview.h.
|
friend |
Definition at line 432 of file qstringview.h.
|
friend |
|
related |