Sur cette page

QAnyStringView Class

La classe QAnyStringView offre une vue unifiée des chaînes de caractères au format Latin-1, UTF-8 ou UTF-16 grâce à un sous-ensemble en lecture seule de l'API ` QString `. En savoir plus...

En-tête : #include <QAnyStringView>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Depuis : Qt 6.0

Remarque : toutes les fonctions de cette classe sont réentrantes.

Comparaisons de QAnyStringView

CatégorieTypes comparables
strongQAnyStringView
strongchar16_t, QChar, const char16_t *, const char *, QByteArray, QByteArrayView, QString, QStringView, QUtf8StringView et QLatin1StringView.

Types publics

Fonctions publiques

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

Membres publics statiques

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)

Description détaillée

Un objet QAnyStringView fait référence à une partie contiguë d'une chaîne de caractères dont il n'est pas propriétaire. Il sert d'interface pour tous les types de chaînes de caractères, sans qu'il soit nécessaire de créer au préalable un objet QString.

Contrairement à QStringView et QUtf8StringView, QAnyStringView peut contenir des chaînes de caractères dans l’un des encodages suivants : UTF-8, UTF-16 et Latin-1. Ce dernier est pris en charge car, contrairement à l’UTF-8, le Latin-1 permet une comparaison efficace avec les données UTF-16 : une différence de longueur signifie déjà que les chaînes ne peuvent pas être égales. Ce n’est pas le cas pour les comparaisons UTF-8/UTF-16, car l’UTF-8 est un encodage à longueur variable.

La chaîne peut être représentée sous la forme d’un tableau (ou d’une structure de données compatible avec les tableaux, telle qu’ QString, std::basic_string, etc.) de type char, char8_t, QChar, ushort, char16_t ou (sur des plateformes telles que Windows, où il s’agit d’un type 16 bits) wchar_t.

QAnyStringView est conçu comme un type d’interface ; son principal cas d’utilisation est celui d’un type de paramètre de fonction. Lorsque des instances de QAnyStringView sont utilisées comme variables automatiques ou membres de données, il faut veiller à ce que les données de chaîne référencées (par exemple, détenues par un QString) survivent à l’instance de QAnyStringView sur tous les chemins d’exécution, afin d’éviter que la vue de chaîne ne finisse par référencer des données supprimées.

Par exemple,

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

cela laisserait str référençant la variable temporaire supprimée (ce qui constitue un comportement indéfini). Cela vaut particulièrement pour les constructeurs à caractère unique :

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

Dans les deux cas, la solution consiste à « épingler » l’objet temporaire à une l-valeur, puis à créer un QAnyStringView à partir de celui-ci :

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

Cependant, l’utilisation de QAnyStringView comme type d’interface, conformément à sa vocation, est toujours sûre, à condition que la documentation de la fonction appelée n’exige pas une durée de vie plus longue :

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

C’est d’ailleurs pour cette raison que QAnyStringView prend en charge ces conversions.

Utilisé comme type d’interface, QAnyStringView permet à une seule fonction d’accepter une grande variété de sources de données de type chaîne. Une seule fonction acceptant QAnyStringView remplace ainsi cinq surcharges de fonction (prenant QString, (const QChar*, qsizetype), QUtf8StringView, QLatin1StringView (mais voir ci-dessus) et QChar), tout en permettant de transmettre à la fonction encore plus de sources de données de type chaîne, telles que u8"Hello World", une chaîne littérale de type char8_t.

Comme partout ailleurs dans Qt, QAnyStringView part du principe que les données d’ char encodées en UTF-8, à moins qu’elles ne soient présentées sous la forme d’un QLatin1StringView.

Depuis Qt 6.4, cependant, les littéraux de chaîne UTF-8 qui sont purement US-ASCII sont automatiquement stockés au format Latin-1. Il s’agit d’une vérification effectuée lors de la compilation, sans surcoût d’exécution. Cette fonctionnalité nécessite une compilation en C++20 ou avec une version récente de GCC.

Les objets `QAnyStringView` doivent être passés par valeur, et non par référence à une constante :

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

QAnyStringView peut également être utilisé comme valeur de retour d’une fonction, mais cela n’est pas recommandé. Les types « QUtf8StringView » ou « QStringView » sont mieux adaptés comme valeurs de retour de fonction. Si vous appelez une fonction renvoyant un `QAnyStringView`, veillez tout particulièrement à ne pas conserver le `QAnyStringView` plus longtemps que la durée pendant laquelle la fonction s'engage à maintenir en vie les données de chaîne référencées. En cas de doute, obtenez une référence forte vers les données en appelant ` toString()` pour convertir le `QAnyStringView` en un ` QString`.

QAnyStringView est un type littéral.

Types de caractères compatibles

QAnyStringView accepte des chaînes de caractères de différents types :

  • char (signés et non signés)
  • char8_t (C++20 uniquement)
  • char16_t
  • wchar_t (lorsqu’il s’agit d’un type 16 bits, par exemple sous Windows)
  • ushort
  • QChar

Les types de caractères 8 bits sont interprétés comme des données UTF-8 (sauf lorsqu’ils sont présentés sous la forme d’un QLatin1StringView), tandis que les types de caractères 16 bits sont interprétés comme des données UTF-16 dans l’ordre des octets de l’hôte (identique à QString).

Les types de caractères suivants ne sont pris en charge que par le constructeur à caractère unique :

  • QLatin1Char
  • QChar::SpecialCharacter
  • wchar_t (lorsqu’il s’agit d’un type 32 bits, c’est-à-dire sous Unix) (depuis la version 6.10)
  • char32_t

Ces types de caractères sont décomposés en interne en une séquence UTF-16 (en utilisant QChar::fromUcs4() pour le dernier).

Tailles et sous-chaînes

Toutes les tailles et positions dans les fonctions de QAnyStringView sont exprimées en unités de code de l’encodage (c’est-à-dire que les paires de substituts UTF-16 comptent pour deux dans le cadre de ces fonctions, comme dans QString, et que les séquences multioctets UTF-8 comptent pour deux, trois ou quatre, selon leur longueur).

Voir également « Quelle classe de chaînes utiliser ? », QUtf8StringView et QStringView.

Documentation sur les types de membres

QAnyStringView::difference_type

Alias de ` std::ptrdiff_t`. Fourni à des fins de compatibilité avec la STL.

QAnyStringView::size_type

Alias de `qsizetype`. Fournis à des fins de compatibilité avec la STL.

Documentation des fonctions membres

[constexpr noexcept] QAnyStringView::QAnyStringView()

Crée une vue de chaîne vide.

Voir aussi isNull().

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

Crée une vue de chaîne à partir de l'ch, qui ne contient qu'un seul caractère. La longueur est généralement de 1 (mais voir ci-dessous).

En général, vous devez partir du principe qu’un QAnyStringView ainsi créé commencera à référencer des données obsolètes à la fin de l’expression complète, lorsque les variables temporaires seront supprimées. Cela signifie qu’il est possible et sans risque de l’utiliser pour transmettre un caractère unique à une fonction acceptant un QAnyStringView (à condition que la documentation de la fonction n’exige pas une durée de vie supérieure à celle de l’appel initial) :

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

En revanche, conserver l’objet plus longtemps entraîne un comportement indéfini :

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

Si vous en avez besoin, préférez

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

Ce qui précède s’applique à tous les types directement pris en charge Compatible Character Types.

Si ` ch ` n’appartient pas à l’un de ces types, mais se convertit simplement en ` QChar`, par exemple ` QChar::SpecialCharacter ` ou ` QLatin1Char`, le `QAnyStringView` se liera à un objet temporaire qui aura été supprimé à la fin de l’expression complète, tout comme dans le deuxième exemple.

Si ch ne peut pas être représenté par une seule unité de code UTF-16 (par exemple parce qu’il s’agit d’une valeur de type char32_t ), ce constructeur décompose ch en deux unités de code UTF-16. Dans ce cas, le QAnyStringView résultant aura une méthode size() de type 2, et le tampon temporaire dans lequel la décomposition est stockée est supprimé à la fin de l’expression complète, comme dans

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

La version sécurisée équivalente dans ce cas serait

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

Voir également QChar::fromUcs4() et Compatible Character Types.

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

Crée une vue de chaîne à partir du littéral de chaîne « string ». La vue couvre le tableau jusqu'à ce que le premier « Char(0) » soit rencontré, ou jusqu'à « N », selon ce qui survient en premier. Si vous avez besoin du tableau complet, utilisez plutôt « fromArray() ».

string doit rester valide pendant toute la durée de vie de cet objet de vue de chaîne.

Contraintes

Ne participe à la résolution des surcharges que si string est un véritable tableau et si Char est un type de caractère compatible.

Voir également Compatible Character Types.

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

Crée une vue de chaîne sur str. La longueur est déterminée en recherchant la première occurrence de Char(0).

str doit rester valide pendant toute la durée de vie de cet objet de vue de chaîne.

Le fait de passer nullptr en tant que str est sans risque et donne lieu à une vue de chaîne nulle.

Contraintes

Ne participe à la résolution des surcharges que si str n’est pas un tableau et si Char est un type de caractère compatible.

Voir également isNull() et Compatible Character Types.

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

Crée une vue de chaîne sur str. La longueur est extraite de std::size(str).

std::data(str) doit rester valide pendant toute la durée de vie de cet objet de vue de chaîne.

La vue de chaîne sera vide si et seulement si std::size(str) == 0. Il n’est pas spécifié si ce constructeur peut aboutir à une vue de chaîne nulle (std::data(str) devrait alors renvoyer nullptr ).

Contraintes

Ne participe à la résolution des surcharges que si ` Container ` est un conteneur dont le type de caractère est compatible avec celui de ` value_type`.

Voir également isNull() et isEmpty().

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

Crée une vue de chaîne sur str. Les données contenues dans str sont interprétées au format UTF-8.

str.data() doit rester valide pendant toute la durée de vie de cet objet de vue de chaîne.

La vue de chaîne sera nulle si et seulement si str.isNull().

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

Crée une vue de chaîne sur str.

str.data() doit rester valide pendant toute la durée de vie de cet objet de vue de chaîne.

La vue de chaîne sera nulle si et seulement si str.isNull().

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

Crée une vue de chaîne vide.

Voir aussi ` isNull()`.

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

Crée une vue de chaîne sur first avec la longueur (last - first).

La plage [first,last) doit rester valide pendant toute la durée de vie de cet objet de vue de chaîne.

Le passage de ` nullptr ` comme ` first ` est sans risque si ` last ` est également ` nullptr`, et donne lieu à une vue de chaîne nulle.

Le comportement est indéfini si last précède first, ou si first est nullptr et que last ne l’est pas.

Contraintes

Ne participe à la résolution des surcharges que si Char est un type de caractère compatible.

Voir également isNull() et Compatible Character Types.

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

Crée une vue de chaîne sur str d'une longueur de len.

La plage [str,len) doit rester valide pendant toute la durée de vie de cet objet de vue de chaîne.

Le passage de ` nullptr ` comme ` str ` est sans risque si ` len ` est également égal à 0, et aboutit à une vue de chaîne nulle.

Le comportement est indéfini si len est négatif ou, lorsqu’il est positif, si str vaut nullptr.

Contraintes

Ne participe à la résolution des surcharges que si Char est un type de caractère compatible.

Voir également isNull() et Compatible Character Types.

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

Remplace les occurrences de « %N » dans cette chaîne par l’argument correspondant issu de args. Les arguments ne sont pas positionnels : le premier élément de args remplace %N par la valeur la plus faible de N (toutes), le deuxième élément de args remplace %N par la valeur suivante la plus faible de N, etc.

Args peut être constitué de n’importe quel élément se convertissant implicitement en QAnyStringView.

Cette fonction a été introduite dans Qt 6.9.

Voir également QString::arg(Args&&...).

[constexpr] QChar QAnyStringView::back() const

Renvoie le dernier caractère de la vue de chaîne.

Cette fonction est fournie à des fins de compatibilité avec la STL.

Avertissement : l'appel de cette fonction sur une vue de chaîne vide entraîne un comportement indéfini.

Voir également front() et Sizes and Sub-Strings.

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

Tronque cette chaîne de caractères de n points de code.

Identique à ` *this = first(size() - n)`.

Remarque : le comportement est indéfini lorsque ` n ` < 0 ou ` n ` > ` size()`.

Cette fonction a été introduite dans Qt 6.5.

Voir également sliced(), first(), last(), chopped(), truncate(), slice() et Sizes and Sub-Strings.

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

Renvoie la sous-chaîne de longueur size() - n à partir du début de cet objet.

Identique à ` first(size() - n)`.

Remarque : le comportement est indéfini lorsque n < 0 ou n > size().

Cette fonction a été introduite dans Qt 6.5.

Voir également sliced(), first(), last(), chop(), truncate(), slice() et Sizes and Sub-Strings.

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

Compare la chaîne « lhs » à la chaîne « rhs » et renvoie un entier négatif si « lhs » est inférieur à « rhs », un entier positif s’il est supérieur à « rhs », et zéro si les deux chaînes sont égales.

Si cs est défini sur Qt::CaseSensitive (valeur par défaut), la comparaison tient compte de la casse ; dans le cas contraire, elle ne tient pas compte de la casse.

Voir également operator==(), operator<() et operator>().

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

Renvoie un pointeur const vers le premier caractère de la vue de chaîne.

Remarque : le tableau de caractères représenté par la valeur de retour n' est pas terminé par un caractère nul.

Voir aussi : ` size_bytes()`.

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

Indique si cette vue de chaîne est vide, c'est-à-dire si size() == 0.

Cette fonction est fournie à des fins de compatibilité avec la STL.

Voir également isEmpty(), isNull() et size().

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

Renvoie une vue de chaîne contenant les x n points de code de cette vue de chaîne.

Remarque : le comportement est indéfini lorsque ` n < 0` ou ` n > size()`.

Cette fonction a été introduite dans Qt 6.5.

Voir également last(), sliced(), chopped(), chop(), truncate(), slice() et 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])

Construit une vue de chaîne à partir du littéral de chaîne complet string composé d’ Size éléments, y compris tout caractère de fin Char(0). Si vous ne souhaitez pas que le caractère de fin soit inclus dans la vue, vous pouvez le supprimer à l’aide de la fonction chop() lorsque vous êtes certain qu’il se trouve à la fin. Vous pouvez également utiliser la surcharge du constructeur prenant un littéral de tableau, qui créera une vue allant jusqu’au premier caractère de fin de chaîne (sans l’inclure) présent dans les données.

string doit rester valide pendant toute la durée de vie de cet objet de vue de chaîne.

Cette fonction fonctionne avec n’importe quel littéral de tableau si Char est un type de caractère compatible. Les types de caractères compatibles sont : QChar, ushort, char16_t et (sur les plateformes telles que Windows, où il s’agit d’un type 16 bits) wchar_t.

[constexpr] QChar QAnyStringView::front() const

Renvoie le premier caractère de la vue de chaîne.

Cette fonction est fournie à des fins de compatibilité avec la STL.

Avertissement : l'appel de cette fonction sur une vue de chaîne vide entraîne un comportement indéfini.

Voir également back() et Sizes and Sub-Strings.

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

Renvoie si cette vue de chaîne est vide, c'est-à-dire si size() == 0.

Cette fonction est fournie à des fins de compatibilité avec d'autres conteneurs Qt.

Voir également empty(), isNull() et size().

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

Renvoie si cette vue de chaîne est nulle, c'est-à-dire si ` data() == nullptr`.

Cette fonction est fournie à des fins de compatibilité avec d'autres conteneurs Qt.

Voir également empty(), isEmpty() et size().

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

Renvoie une vue de chaîne contenant les x derniers points de code de la vue de chaîne n.

Remarque : le comportement est indéfini lorsque ` n < 0` ou lorsque ` n > size()`.

Cette fonction a été introduite dans Qt 6.5.

Voir également first(), sliced(), chopped(), chop(), truncate(), slice() et Sizes and Sub-Strings.

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

Identique à ` size()`.

Cette fonction est fournie à des fins de compatibilité avec d'autres conteneurs Qt.

Voir également size().

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

Cette fonction est fournie à des fins de compatibilité avec la STL.

Elle renvoie le nombre maximal d'éléments que la vue de chaîne peut théoriquement représenter. En pratique, ce nombre peut être bien inférieur, car il est limité par la quantité de mémoire disponible sur le système.

Remarque : la valeur renvoyée est calculée en fonction du type de caractère actuellement utilisé ; ainsi, l'appel de cette fonction sur deux vues différentes peut renvoyer des résultats différents.

Cette fonction a été introduite dans Qt 6.8.

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

Renvoie la taille de cette vue de chaîne, exprimée en points de code de l'encodage.

Voir également empty(), isEmpty(), isNull(), size_bytes() et Sizes and Sub-Strings.

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

Renvoie la taille de cette vue de chaîne, mais en octets et non en points de code.

Vous pouvez utiliser cette fonction avec data() pour le hachage ou la sérialisation.

Cette fonction est fournie à des fins de compatibilité avec la STL.

Voir également size() et data().

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

Modifie cette vue de chaîne pour qu’elle commence à la position pos et s’étende sur n points de code.

Remarque : le comportement est indéfini lorsque pos < 0, n < 0 ou pos + n > size().

Cette fonction a été introduite dans Qt 6.8.

Voir également sliced(), first(), last(), chopped(), chop(), truncate() et Sizes and Sub-Strings.

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

Modifie cette vue de chaîne pour qu'elle commence à la position pos et s'étende jusqu'à la fin de celle-ci.

Remarque : le comportement est indéfini lorsque pos < 0 ou pos > size().

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.8.

Voir également sliced(), first(), last(), chopped(), chop(), truncate() et Sizes and Sub-Strings.

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

Renvoie une vue de chaîne commençant à la position pos dans cet objet et s'étendant jusqu'à la fin de celui-ci.

Remarque : le comportement est indéfini lorsque ` pos < 0` ou ` pos > size()`.

Cette fonction a été introduite dans Qt 6.5.

Voir également first(), last(), chopped(), chop(), truncate(), slice() et Sizes and Sub-Strings.

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

Renvoie une vue de chaîne contenant les points de code n de cette vue de chaîne, à partir de la position pos.

Remarque : le comportement est indéfini lorsque pos < 0, n < 0 ou pos + n > size().

Cette fonction a été introduite dans Qt 6.5.

Voir également first(), last(), chopped(), chop(), truncate(), slice() et Sizes and Sub-Strings.

QString QAnyStringView::toString() const

Renvoie une copie profonde des données de cette vue de chaîne sous la forme d'un ` QString`.

La valeur renvoyée sera une ` QString ` nulle si et seulement si cette vue de chaîne est nulle.

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

Tronque cette chaîne de caractères à n points de code.

Identique à ` *this = first(n)`.

Remarque : le comportement est indéfini lorsque ` n ` < 0 ou lorsque ` n ` > ` size`().

Cette fonction a été introduite dans Qt 6.5.

Voir également sliced(), first(), last(), chopped(), chop() et Sizes and Sub-Strings.

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

Appelle la fonction ` v ` en lui passant soit ` QUtf8StringView`, soit ` QLatin1String`, soit ` QStringView`, selon l'encodage des données de chaîne auxquelles cette vue de chaîne fait référence.

C'est ainsi que la plupart des fonctions prenant QAnyStringView se ramifient en fonctions spécifiques à chaque encodage :

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

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

Ici, nous réutilisons le même nom, s, à la fois pour l’objet QAnyStringView et pour le paramètre du lambda. Il s’agit d’un code idiomatique qui permet de suivre l’identité des objets à travers les appels à `visit()`, par exemple dans des situations plus complexes telles que

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() exige que toutes les instanciations de lambda aient le même type de retour. Si elles diffèrent, vous obtenez une erreur de compilation, même s'il existe un type commun. Pour y remédier, vous pouvez utiliser des types de retour explicites dans le lambda ou effectuer un transtypage dans les instructions de retour :

// 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
    });
}

Éléments non membres associés

[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)

Opérateurs permettant de comparer lhs à rhs.

Voir également compare().

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

Affiche « s » dans le flux de débogage « d ».

Si d.quotedString() est true, cela indique l'encodage de la chaîne. Si vous souhaitez uniquement les données de la chaîne, utilisez visit() comme suit :

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

Cette fonction a été introduite dans Qt 6.7.

Voir également 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.