Auf dieser Seite

QAnyStringView Class

Die Klasse „QAnyStringView“ bietet eine einheitliche Darstellung von Latin-1-, UTF-8- oder UTF-16-Zeichenketten mithilfe einer schreibgeschützten Teilmenge der „ QString “-API. Mehr...

Header: #include <QAnyStringView>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Seit: Qt 6.0

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

QAnyStringView-Vergleiche

KategorieVergleichbare Typen
starkQAnyStringView
strongchar16_t, QChar, const char16_t *, const char *, QByteArray, QByteArrayView, QString, QStringView, QUtf8StringView und QLatin1StringView.

Öffentliche Typen

Öffentliche Funktionen

QAnyStringView()
QAnyStringView(const Char &ch)
QAnyStringView(const Char (&string)[N])
QAnyStringView(const Char *str)
QAnyStringView(const Container &str)
QAnyStringView(const QByteArray &str)
QAnyStringView(const QString &str)
QAnyStringView(std::nullptr_t)
QAnyStringView(const Char *first, const Char *last)
QAnyStringView(const Char *str, qsizetype len)
(since 6.9) QString arg(Args &&... args) const
QChar back() const
(since 6.5) void chop(qsizetype n)
(since 6.5) QAnyStringView chopped(qsizetype n) const
const void *data() const
bool empty() const
(since 6.5) QAnyStringView first(qsizetype n) const
QChar front() const
bool isEmpty() const
bool isNull() const
(since 6.5) QAnyStringView last(qsizetype n) const
qsizetype length() const
(since 6.8) qsizetype max_size() const
qsizetype size() const
qsizetype size_bytes() const
(since 6.8) QAnyStringView &slice(qsizetype pos, qsizetype n)
(since 6.8) QAnyStringView &slice(qsizetype pos)
(since 6.5) QAnyStringView sliced(qsizetype pos) const
(since 6.5) QAnyStringView sliced(qsizetype pos, qsizetype n) const
QString toString() const
(since 6.5) void truncate(qsizetype n)
decltype(auto) visit(Visitor &&v) const

Statische öffentliche Mitglieder

int compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QAnyStringView fromArray(const Char (&string)[Size])
bool operator!=(const QAnyStringView &lhs, const QAnyStringView &rhs)
bool operator<(const QAnyStringView &lhs, const QAnyStringView &rhs)
(since 6.7) QDebug operator<<(QDebug d, QAnyStringView s)
bool operator<=(const QAnyStringView &lhs, const QAnyStringView &rhs)
bool operator==(const QAnyStringView &lhs, const QAnyStringView &rhs)
bool operator>(const QAnyStringView &lhs, const QAnyStringView &rhs)
bool operator>=(const QAnyStringView &lhs, const QAnyStringView &rhs)

Ausführliche Beschreibung

Ein `QAnyStringView` verweist auf einen zusammenhängenden Teil einer Zeichenkette, die ihm nicht gehört. Er fungiert als Schnittstellentyp für alle Arten von Zeichenketten, ohne dass zuvor ein ` QString ` erstellt werden muss.

Im Gegensatz zu ` QStringView ` und ` QUtf8StringView` kann `QAnyStringView` Zeichenketten in jeder der folgenden Kodierungen enthalten: UTF-8, UTF-16 und Latin-1. Letzteres wird unterstützt, da Latin-1 – im Gegensatz zu UTF-8 – effizient mit UTF-16-Daten verglichen werden kann: Eine Längenabweichung bedeutet bereits, dass die Zeichenketten nicht gleich sein können. Dies gilt nicht für Vergleiche zwischen UTF-8 und UTF-16, da UTF-8 eine Kodierung mit variabler Länge ist.

Die Zeichenkette kann als Array (oder als array-kompatible Datenstruktur wie z. B. ` QString`, `std::basic_string` usw.) der Typen ` char`, ` char8_t`, ` QChar`, ` ushort`, ` char16_t ` oder (auf Plattformen wie Windows, wo es sich um einen 16-Bit-Typ handelt) ` wchar_t` dargestellt werden.

QAnyStringView ist als Schnittstellentyp konzipiert; sein Hauptanwendungsfall ist die Verwendung als Funktionsparametertyp. Wenn QAnyStringViews als automatische Variablen oder Datenelemente verwendet werden, muss darauf geachtet werden, dass die referenzierten Zeichenfolgendaten (die beispielsweise einem „ QString “ gehören) auf allen Codepfaden länger bestehen bleiben als das QAnyStringView, damit die Zeichenfolgenansicht nicht auf gelöschte Daten verweist.

Beispielsweise

QAnyStringView str = funcReturningQString(); // return value is a temp

würde „ str “ auf die gelöschte temporäre Variable verweisen (was zu undefiniertem Verhalten führt). Dies gilt insbesondere für die Ein-Zeichen-Konstruktoren:

QAnyStringView ch = u' '; // u' ' is a temporary
// oops, ch references deleted temporary

In beiden Fällen besteht die Lösung darin, das temporäre Objekt an einen L-Wert zu „binden“ und erst dann eine `QAnyStringView` daraus zu erstellen:

const auto r = funcReturningQString();
QAnyStringView str = r; // ok, `r` outlives `str`
const auto sp = u' ';
QAnyStringView ch = sp; // ok, `sp` outlives `ch`

Die Verwendung von `QAnyStringView` als den vorgesehenen Schnittstellentyp ist jedoch immer sicher, vorausgesetzt, die Dokumentation der aufgerufenen Funktion verlangt keine längere Lebensdauer:

void func(QAnyStringView s);
func(u' ');
func(functionReturningQString());

Aus diesem Grund unterstützt QAnyStringView diese Konvertierungen überhaupt erst.

Bei Verwendung als Schnittstellentyp ermöglicht QAnyStringView es einer einzigen Funktion, eine Vielzahl von Zeichenfolgen-Datenquellen zu akzeptieren. Eine Funktion, die QAnyStringView akzeptiert, ersetzt somit fünf Funktionsüberladungen (die QString, (const QChar*, qsizetype), QUtf8StringView, QLatin1StringView (siehe jedoch oben) und QChar entgegennehmen), während gleichzeitig noch mehr Zeichenfolgen-Datenquellen an die Funktion übergeben werden können, wie beispielsweise u8"Hello World" oder ein char8_t -Zeichenfolgenliteral.

Wie auch an anderer Stelle in Qt geht QAnyStringView davon aus, dass „ char “-Daten in UTF-8 kodiert sind, sofern sie nicht als „ QLatin1StringView “ dargestellt werden.

Seit Qt 6.4 werden jedoch UTF-8-Zeichenfolgenliterale, die rein aus US-ASCII bestehen, automatisch als Latin-1 gespeichert. Dies ist eine Überprüfung zur Kompilierungszeit ohne Laufzeit-Overhead. Diese Funktion erfordert die Kompilierung mit C++20 oder einem aktuellen GCC.

QAnyStringViews sollten als Wert und nicht als Referenz auf eine Konstante übergeben werden:

void myfun1(QAnyStringView sv);        // preferred
void myfun2(const QAnyStringView &sv); // compiles and works, but slower

QAnyStringView kann auch als Rückgabewert einer Funktion verwendet werden, dies wird jedoch nicht empfohlen. „ QUtf8StringView “ oder „ QStringView “ eignen sich besser als Funktionsrückgabewerte. Wenn Sie eine Funktion aufrufen, die ein `QAnyStringView` zurückgibt, achten Sie besonders darauf, das `QAnyStringView` nicht länger zu behalten, als die Funktion verspricht, die referenzierten Zeichenfolgendaten aufrechtzuerhalten. Im Zweifelsfall sollten Sie eine starke Referenz auf die Daten erhalten, indem Sie ` toString()` aufrufen, um das `QAnyStringView` in ein ` QString` umzuwandeln.

QAnyStringView ist ein Literal-Typ.

Kompatible Zeichentypen

QAnyStringView akzeptiert Zeichenfolgen mit einer Vielzahl von Zeichentypen:

  • char (sowohl vorzeichenbehaftet als auch vorzeichenlos)
  • char8_t (nur C++20)
  • char16_t
  • wchar_t (sofern es sich um einen 16-Bit-Typ handelt, z. B. unter Windows)
  • ushort
  • QChar

Die 8-Bit-Zeichentypen werden als UTF-8-Daten interpretiert (außer wenn sie als „ QLatin1StringView “ dargestellt werden), während die 16-Bit-Zeichentypen als UTF-16-Daten in der Byte-Reihenfolge des Hosts interpretiert werden (genau wie „ QString “).

Die folgenden Zeichentypen werden nur vom Konstruktor für Einzelzeichen unterstützt:

  • QLatin1Char
  • QChar::SpecialCharacter
  • wchar_t (sofern es sich um einen 32-Bit-Typ handelt, d. h. unter Unix) (seit 6.10)
  • char32_t

Diese Zeichentypen werden intern in eine UTF-16-Sequenz zerlegt (wobei für den letzten Typ QChar::fromUcs4() verwendet wird).

Größen und Teilzeichenfolgen

Alle Größen und Positionen in den Funktionen von `QAnyStringView` werden in den Codeeinheiten der Kodierung angegeben (d. h., UTF-16-Surrogatpaare zählen für diese Funktionen als zwei, genau wie in ` QString`, und UTF-8-Multibyte-Sequenzen zählen je nach Länge als zwei, drei oder vier).

Siehe auch „Welche String-Klasse soll verwendet werden?“, QUtf8StringView sowie QStringView.

Dokumentation zu Mitgliedstypen

QAnyStringView::difference_type

Alias für ` std::ptrdiff_t`. Wird aus Kompatibilitätsgründen mit der STL bereitgestellt.

QAnyStringView::size_type

Alias für „qsizetype“. Wird aus Kompatibilitätsgründen mit der STL bereitgestellt.

Dokumentation zu den Member-Funktionen

[constexpr noexcept] QAnyStringView::QAnyStringView()

Erstellt eine Null-String-Ansicht.

Siehe auch ` isNull()`.

[constexpr noexcept] template <typename Char> requires if_compatible_char<Char> QAnyStringView::QAnyStringView(const Char &ch)

Erstellt eine String-Ansicht auf der Ein-Zeichen- ch. Die Länge beträgt in der Regel 1 (siehe jedoch weiter unten).

Generell muss man davon ausgehen, dass eine auf diese Weise erstellte `QAnyStringView` am Ende des vollständigen Ausdrucks auf veraltete Daten verweist, wenn temporäre Variablen gelöscht werden. Das bedeutet, dass es in Ordnung und sicher ist, damit ein einzelnes Zeichen an eine Funktion zu übergeben, die eine `QAnyStringView` akzeptiert (solange in der Funktionsdokumentation keine längere Lebensdauer als der ursprüngliche Aufruf gefordert wird):

int to_int(QAnyStringView);
int res = to_int(u'9'); // OK, data stays around for the duration of the call

Das Objekt jedoch länger beizubehalten, führt zu undefiniertem Verhalten:

QAnyStringView ch = u'9';
int res = to_int(ch); // (silent) ERROR: ch references deleted data

Wenn Sie dies benötigen, verwenden Sie lieber

const auto nine = u'9';
QAnyStringView ch(nine); // ok, references `nine`, which outlives `ch`
int res = to_int(ch); // 9

Das Obige gilt für alle direkt unterstützten „ Compatible Character Types “.

Wenn ` ch ` nicht zu diesen Typen gehört, sondern lediglich in ` QChar` konvertiert wird, z. B. ` QChar::SpecialCharacter ` oder ` QLatin1Char`, bindet sich die `QAnyStringView` an ein temporäres Objekt, das am Ende des vollständigen Ausdrucks gelöscht wird, genau wie im zweiten Beispiel.

Wenn „ ch “ nicht in einer einzigen UTF-16-Codeeinheit dargestellt werden kann (z. B. weil es sich um einen „ char32_t “-Wert handelt), zerlegt dieser Konstruktor „ ch “ in zwei UTF-16-Codeeinheiten. Die resultierende `QAnyStringView` hat in diesem Fall einen ` size()` von ` 2 `, und der temporäre Puffer, in dem die Zerlegung gespeichert ist, wird am Ende des vollständigen Ausdrucks gelöscht, ähnlich wie bei

[](char32_t ch, auto &&tmp = QChar::fromUcs4(ch)) {
    return QAnyStringView(tmp);
}

Die entsprechende sichere Version wäre in diesem Fall

const auto decomposed = QChar::fromUcs4(ch);
QAnyStringView ch(decomposed);

Siehe auch QChar::fromUcs4() und Compatible Character Types.

[constexpr noexcept] template <typename Char, size_t N> QAnyStringView::QAnyStringView(const Char (&string)[N])

Erstellt eine String-Ansicht für das Zeichenfolgenliteral „ string “. Die Ansicht deckt das Array ab, bis entweder das erste „ Char(0) “ oder „ N “ auftritt – je nachdem, was zuerst eintritt. Wenn Sie das gesamte Array benötigen, verwenden Sie stattdessen „ fromArray()“.

string muss während der gesamten Lebensdauer dieses String-View-Objekts gültig bleiben.

Einschränkungen

Nimmt nur dann an der Überladungsauflösung teil, wenn „ string “ ein tatsächliches Array und „ Char “ ein kompatibler Zeichentyp ist.

Siehe auch ` Compatible Character Types`.

[constexpr noexcept] template <typename Char> QAnyStringView::QAnyStringView(const Char *str)

Erstellt eine String-Ansicht auf str. Die Länge wird durch das Durchsuchen nach dem ersten Char(0) ermittelt.

str muss während der gesamten Lebensdauer dieses String-View-Objekts gültig bleiben.

Die Übergabe von ` nullptr ` als ` str ` ist unbedenklich und führt zu einer leeren Zeichenfolgenansicht.

Einschränkungen

Nimmt nur dann an der Überladungsauflösung teil, wenn str kein Array ist und Char ein kompatibler Zeichentyp ist.

Siehe auch isNull() und Compatible Character Types.

[constexpr noexcept] template <typename Container> requires if_compatible_container<Container> QAnyStringView::QAnyStringView(const Container &str)

Erstellt eine String-Ansicht auf der Basis von str. Die Länge wird aus std::size(str) übernommen.

std::data(str) muss während der gesamten Lebensdauer dieses String-View-Objekts gültig bleiben.

Die Zeichenfolgenansicht ist genau dann leer, wenn std::size(str) == 0 gilt. Es ist nicht spezifiziert, ob dieser Konstruktor zu einer leeren Zeichenfolgenansicht führen kann (dazu müsstestd::data(str) „ nullptr “ zurückgeben).

Einschränkungen

Nimmt nur dann an der Überladungsauflösung teil, wenn ` Container ` ein Container mit einem mit ` value_type` kompatiblen Zeichentyp ist.

Siehe auch isNull() und isEmpty().

[noexcept] QAnyStringView::QAnyStringView(const QByteArray &str)

Erstellt eine String-Ansicht auf str. Die Daten in str werden als UTF-8 interpretiert.

str.data() muss während der gesamten Lebensdauer dieses String-View-Objekts gültig bleiben.

Die Zeichenfolgenansicht ist genau dann null, wenn str.isNull() ist.

[noexcept] QAnyStringView::QAnyStringView(const QString &str)

Erstellt eine String-Ansicht auf str.

str.data() muss für die gesamte Lebensdauer dieses String-View-Objekts gültig bleiben.

Die Zeichenfolgenansicht ist genau dann null, wenn str.isNull().

[constexpr noexcept] QAnyStringView::QAnyStringView(std::nullptr_t)

Erstellt eine Null-String-Ansicht.

Siehe auch „ isNull()“.

[constexpr] template <typename Char> requires if_compatible_char<Char> QAnyStringView::QAnyStringView(const Char *first, const Char *last)

Erstellt eine String-Ansicht auf first mit der Länge (last – first).

Der Bereich [first,last) muss während der gesamten Lebensdauer dieses String-View-Objekts gültig bleiben.

Die Übergabe von ` nullptr ` als ` first ` ist sicher, wenn ` last ` ebenfalls ` nullptr` ist, und führt zu einer leeren Zeichenfolgenansicht.

Das Verhalten ist undefiniert, wenn „ last “ vor „ first “ steht oder wenn „ first “ „ nullptr “ ist und „ last “ nicht.

Einschränkungen

Nimmt nur dann an der Überladungsauflösung teil, wenn Char ein kompatibler Zeichentyp ist.

Siehe auch „ isNull()“ und „ Compatible Character Types “.

[constexpr] template <typename Char> requires if_compatible_char<Char> QAnyStringView::QAnyStringView(const Char *str, qsizetype len)

Erstellt eine String-Ansicht auf str mit der Länge len.

Der Bereich [str,len) muss während der gesamten Lebensdauer dieses String-View-Objekts gültig bleiben.

Die Übergabe von ` nullptr ` als ` str ` ist sicher, wenn ` len ` ebenfalls 0 ist, und führt zu einer leeren Zeichenfolgenansicht.

Das Verhalten ist undefiniert, wenn „ len “ negativ ist oder – bei positivem Wert – wenn „ str “ gleich „ nullptr “ ist.

Einschränkungen

Nimmt nur dann an der Überladungsauflösung teil, wenn „ Char “ ein kompatibler Zeichentyp ist.

Siehe auch ` isNull()` und ` Compatible Character Types`.

[since 6.9] template <typename... Args> QString QAnyStringView::arg(Args &&... args) const

Ersetzt alle Vorkommen von „ %N “ in dieser Zeichenkette durch das entsprechende Argument aus „ args “. Die Argumente sind nicht positionsabhängig: Das erste Argument unter „ args “ ersetzt „ %N “ durch den niedrigsten Wert unter „ N “ (alle davon), das zweite Argument unter „ args “ ersetzt „ %N “ durch den nächstniedrigeren Wert unter „ N “ usw.

Args kann aus allem bestehen, was implizit in ` QAnyStringView` konvertiert wird.

Diese Funktion wurde in Qt 6.9 eingeführt.

Siehe auch „ QString::arg“ (Args&&...).

[constexpr] QChar QAnyStringView::back() const

Gibt das letzte Zeichen der Zeichenfolgenansicht zurück.

Diese Funktion wird aus Gründen der STL-Kompatibilität bereitgestellt.

Warnung: Der Aufruf dieser Funktion für eine leere Zeichenfolgenansicht führt zu undefiniertem Verhalten.

Siehe auch „ front()“ und „ Sizes and Sub-Strings “.

[constexpr, since 6.5] void QAnyStringView::chop(qsizetype n)

Kürzt diese Zeichenfolgenansicht um n Codepunkte.

Entspricht „ *this = first(size() - n) “.

Hinweis: Das Verhalten ist undefiniert, wenn ` n < 0` oder ` n > size().

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch sliced(), first(), last(), chopped(), truncate(), slice() und Sizes and Sub-Strings.

[constexpr, since 6.5] QAnyStringView QAnyStringView::chopped(qsizetype n) const

Gibt die Teilzeichenkette mit der Länge „ size()“ – „ n “ zurück, beginnend am Anfang dieses Objekts.

Entspricht ` first(size() - n)`.

Hinweis: Das Verhalten ist undefiniert, wenn n < 0 oder n > size().

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch „ sliced()“, „ first()“, „ last()“, „ chop()“, „ truncate()“, „ slice()“ und „ Sizes and Sub-Strings “.

[static noexcept] int QAnyStringView::compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Vergleicht die Zeichenfolgenansicht lhs mit der Zeichenfolgenansicht rhs und gibt eine negative Ganzzahl zurück, wenn lhs kleiner als rhs ist, eine positive Ganzzahl, wenn sie größer als rhs ist, und Null, wenn sie gleich sind.

Wenn cs auf Qt::CaseSensitive gesetzt ist (Standard), wird beim Vergleich die Groß-/Kleinschreibung berücksichtigt; andernfalls wird die Groß-/Kleinschreibung nicht berücksichtigt.

Siehe auch operator==(), operator<() und operator>().

[constexpr noexcept] const void *QAnyStringView::data() const

Gibt einen const-Zeiger auf das erste Zeichen in der Zeichenfolgenansicht zurück.

Hinweis: Das durch den Rückgabewert dargestellte Zeichenarray ist nicht null-terminiert.

Siehe auch ` size_bytes()`.

[constexpr noexcept] bool QAnyStringView::empty() const

Gibt zurück, ob diese Zeichenfolgenansicht leer ist – das heißt, ob „ size() == 0 “ gilt.

Diese Funktion wird aus Gründen der STL-Kompatibilität bereitgestellt.

Siehe auch isEmpty(), isNull() und size().

[constexpr, since 6.5] QAnyStringView QAnyStringView::first(qsizetype n) const

Gibt eine Zeichenfolgenansicht zurück, die die ersten n Codepunkte dieser Zeichenfolgenansicht enthält.

Hinweis: Das Verhalten ist undefiniert, wenn „ n “ < 0 oder „ n “ > „ size “ () ist.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch „ last()“, „ sliced()“, „ chopped()“, „ chop()“, „ truncate()“, „ slice()“ und „ Sizes and Sub-Strings “.

[static constexpr noexcept] template <typename Char, size_t Size> requires if_compatible_char<Char> QAnyStringView QAnyStringView::fromArray(const Char (&string)[Size])

Erstellt eine String-Ansicht des vollständigen Zeichenfolgenliterals „ string “ aus „ Size “-Elementen, einschließlich eines eventuell am Ende stehenden „ Char(0) “. Wenn Sie nicht möchten, dass der Null-Terminator in der Ansicht enthalten ist, können Sie ihn mit „ chop()“ entfernen, sobald Sie sicher sind, dass er am Ende steht. Alternativ können Sie die Konstruktorüberladung verwenden, die ein Array-Literal akzeptiert und eine Ansicht erstellt, die bis zum ersten Null-Terminator in den Daten reicht, diesen jedoch nicht einschließt.

string muss für die gesamte Lebensdauer dieses String-View-Objekts gültig bleiben.

Diese Funktion funktioniert mit jedem Array-Literal, sofern „ Char “ ein kompatibler Zeichentyp ist. Die kompatiblen Zeichentypen sind: „ QChar “, „ ushort “, „ char16_t “ und (auf Plattformen wie Windows, wo es sich um einen 16-Bit-Typ handelt) „ wchar_t “.

[constexpr] QChar QAnyStringView::front() const

Gibt das erste Zeichen in der Zeichenfolgenansicht zurück.

Diese Funktion wird aus Gründen der STL-Kompatibilität bereitgestellt.

Warnung: Der Aufruf dieser Funktion für eine leere Zeichenfolgenansicht führt zu undefiniertem Verhalten.

Siehe auch „ back()“ und „ Sizes and Sub-Strings “.

[constexpr noexcept] bool QAnyStringView::isEmpty() const

Gibt zurück, ob diese String-Ansicht leer ist – das heißt, ob size() == 0 gilt.

Diese Funktion wird aus Gründen der Kompatibilität mit anderen Qt-Containern bereitgestellt.

Siehe auch empty(), isNull() und size().

[constexpr noexcept] bool QAnyStringView::isNull() const

Gibt zurück, ob diese String-Ansicht null ist – das heißt, ob „ data() == nullptr “ gilt.

Diese Funktion wird aus Gründen der Kompatibilität mit anderen Qt-Containern bereitgestellt.

Siehe auch empty(), isEmpty() und size().

[constexpr, since 6.5] QAnyStringView QAnyStringView::last(qsizetype n) const

Gibt eine Zeichenfolgenansicht zurück, die die letzten n Codepunkte dieser Zeichenfolgenansicht enthält.

Hinweis: Das Verhalten ist undefiniert, wenn „ n “ < 0 oder „ n “ > „ size “ () ist.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch „ first()“, „ sliced()“, „ chopped()“, „ chop()“, „ truncate()“, „ slice()“ und „ Sizes and Sub-Strings “.

[constexpr noexcept] qsizetype QAnyStringView::length() const

Entspricht „ size()“.

Diese Funktion wird aus Gründen der Kompatibilität mit anderen Qt-Containern bereitgestellt.

Siehe auch size().

[constexpr noexcept, since 6.8] qsizetype QAnyStringView::max_size() const

Diese Funktion dient der STL-Kompatibilität.

Sie gibt die maximale Anzahl an Elementen zurück, die die String-View theoretisch darstellen kann. In der Praxis kann diese Zahl jedoch deutlich geringer ausfallen, da sie durch den dem System zur Verfügung stehenden Speicher begrenzt ist.

Hinweis: Der Rückgabewert wird auf der Grundlage des aktuell verwendeten Zeichentyps berechnet, sodass der Aufruf dieser Funktion bei zwei verschiedenen Ansichten zu unterschiedlichen Ergebnissen führen kann.

Diese Funktion wurde in Qt 6.8 eingeführt.

[constexpr noexcept] qsizetype QAnyStringView::size() const

Gibt die Größe dieser String-Ansicht in den Codepunkten der Kodierung zurück.

Siehe auch empty(), isEmpty(), isNull(), size_bytes() und Sizes and Sub-Strings.

[constexpr noexcept] qsizetype QAnyStringView::size_bytes() const

Gibt die Größe dieser String-Ansicht zurück, jedoch in Bytes und nicht in Codepunkten.

Sie können diese Funktion zusammen mit ` data()` für das Hashing oder die Serialisierung verwenden.

Diese Funktion wird aus Gründen der STL-Kompatibilität bereitgestellt.

Siehe auch ` size()` und ` data()`.

[constexpr, since 6.8] QAnyStringView &QAnyStringView::slice(qsizetype pos, qsizetype n)

Passen Sie diese Zeichenfolgenansicht so an, dass sie an der Position pos beginnt und sich über n Codepunkte erstreckt.

Hinweis: Das Verhalten ist undefiniert, wenn pos < 0, n < 0 oder pos + n > size().

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch sliced(), first(), last(), chopped(), chop(), truncate() und Sizes and Sub-Strings.

[constexpr, since 6.8] QAnyStringView &QAnyStringView::slice(qsizetype pos)

Passen Sie diese Zeichenfolgenansicht so an, dass sie an der Position pos beginnt und sich bis zum Ende erstreckt.

Hinweis: Das Verhalten ist undefiniert, wenn pos < 0 oder pos > size().

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch sliced(), first(), last(), chopped(), chop(), truncate() und Sizes and Sub-Strings.

[constexpr, since 6.5] QAnyStringView QAnyStringView::sliced(qsizetype pos) const

Gibt eine String-Ansicht zurück, die an der Position pos in diesem Objekt beginnt und sich bis zu dessen Ende erstreckt.

Hinweis: Das Verhalten ist undefiniert, wenn ` pos < 0` oder ` pos > size().

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch „ first()“, „ last()“, „ chopped()“, „ chop()“, „ truncate()“, „ slice()“ und „ Sizes and Sub-Strings “.

[constexpr, since 6.5] QAnyStringView QAnyStringView::sliced(qsizetype pos, qsizetype n) const

Gibt eine String-Ansicht zurück, die die Code-Punkte „ n “ dieser String-Ansicht enthält, beginnend an der Position „ pos “.

Hinweis: Das Verhalten ist undefiniert, wenn pos < 0, n < 0 oder pos + n > size().

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch first(), last(), chopped(), chop(), truncate(), slice() und Sizes and Sub-Strings.

QString QAnyStringView::toString() const

Gibt eine tiefe Kopie der Daten dieser String-View als ` QString` zurück.

Der Rückgabewert ist genau dann ein ` QString ` vom Typ `null`, wenn diese String-Ansicht `null` ist.

[constexpr, since 6.5] void QAnyStringView::truncate(qsizetype n)

Kürzt diese Zeichenfolge auf n Code-Punkte.

Entspricht „ *this = first(n) “.

Hinweis: Das Verhalten ist undefiniert, wenn „ n “ < 0 oder „ n “ > „ size “ () ist.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch ` sliced()`, ` first()`, ` last()`, ` chopped()`, ` chop()` und ` Sizes and Sub-Strings`.

[constexpr] template <typename Visitor> decltype(auto) QAnyStringView::visit(Visitor &&v) const

Ruft „ v “ mit entweder „ QUtf8StringView “, „ QLatin1String “ oder „ QStringView “ auf, je nach Kodierung der Zeichenfolgendaten, auf die diese String-View verweist.

Auf diese Weise verzweigen sich die meisten Funktionen, die ` QAnyStringView ` entgegennehmen, in kodierungsspezifische Funktionen:

void processImpl(QLatin1String s) { ~~~ }
void processImpl(QUtf8StringView s) { ~~~ }
void processImpl(QStringView s) { ~~~ }

void process(QAnyStringView s)
{
    s.visit([](auto s) { processImpl(s); });
}

Hier verwenden wir denselben Namen, „ s “, sowohl für das „ QAnyStringView “-Objekt als auch für den Parameter des Lambda-Ausdrucks. Dies entspricht der gängigen Programmierpraxis und hilft dabei, die Identität der Objekte über „visit()“-Aufrufe hinweg zu verfolgen, beispielsweise in komplexeren Situationen wie

bool equal(QAnyStringView lhs, QAnyStringView rhs)
{
    // assuming operator==(QAnyStringView, QAnyStringView) didn't, yet, exist:
    return lhs.visit([rhs](auto lhs) {
        rhs.visit([lhs](auto rhs) {
            return lhs == rhs;
        });
    });
}

„visit()“ erfordert, dass alle Lambda-Instanziierungen denselben Rückgabetyp haben. Wenn sie sich unterscheiden, erhalten Sie einen Kompilierungsfehler, selbst wenn es einen gemeinsamen Typ gibt. Um dies zu beheben, können Sie explizite Rückgabetypen im Lambda verwenden oder in den „return“-Anweisungen einen Typumwandlungsbefehl einfügen:

// wrong:
QAnyStringView firstHalf(QAnyStringView input)
{
    return input.visit([](auto input) {   // ERROR: lambdas return different types
        return input.sliced(0, input.size() / 2);
    });
}
// correct:
QAnyStringView firstHalf(QAnyStringView input)
{
    return input.visit([](auto input) -> QAnyStringView { // OK, explicit return type
        return input.sliced(0, input.size() / 2);
    });
}
// also correct:
QAnyStringView firstHalf(QAnyStringView input)
{
    return input.visit([](auto input) {
        return QAnyStringView(input.sliced(0, input.size() / 2)); // OK, cast to common type
    });
}

Verwandte Nicht-Mitglieder

[noexcept] bool operator!=(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator<(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator<=(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator==(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator>(const QAnyStringView &lhs, const QAnyStringView &rhs)

[noexcept] bool operator>=(const QAnyStringView &lhs, const QAnyStringView &rhs)

Operatoren, die „ lhs “ mit „ rhs “ vergleichen.

Siehe auch compare().

[since 6.7] QDebug operator<<(QDebug d, QAnyStringView s)

Gibt „ s “ im Debug-Stream „ d “ aus.

Wenn „ d.quotedString() “ gleich „ true “ ist, gibt dies an, in welcher Kodierung die Zeichenkette vorliegt. Wenn Sie nur die Zeichenkettendaten benötigen, verwenden Sie „ visit()“ wie folgt:

s.visit([&d) (auto s) { d << s; });

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch ` QAnyStringView::visit()`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.