Manipulation de chaînes de caractères avec la classe QString en Qt

1. Opérations fondamentales sur les chaînes

La classe QString propose diverses méthodes pour modifier le contenu d'une chaîne, notamment par l'ajout, l'insertion, le remplacement ou la suppression de segments de texte.

1.1 Concaténation avec l'opérateur += et append()

L'opérateur += est une surcharge pratique qui appelle en interne la méthode append(). Ces outils permettent d'ajouter des données à la fin d'une instance existante.


// Exemple avec l'opérateur +=
QString base = "Open";
QString extension = "Source";
base += extension; 
// base contient maintenant "OpenSource"

// Exemple avec append()
QString log = "Erreur: ";
log.append("Fichier non trouvé");
// log contient "Erreur: Fichier non trouvé"

1.2 Mise en forme avec arg()

La fonction arg() est essentielle pour construire des chaînes dynamqiues. Elle remplace les marqueurs de position (comme %1, %2) par des valeurs spécifiques.


QString templateStr = "ID: %1 | Statut: %2";
QString result = templateStr.arg(101).arg("Actif");
// result == "ID: 101 | Statut: Actif"

// Remplacement multiple
QString path = "%1/%2.%3";
QString fullPath = path.arg("home", "config", "ini");
// fullPath == "home/config.ini"

1.3 Insertion et Remplacement

Pour modifier une chaîne à un index précis, on utilise insert() ou replace().


// Insertion
QString mot = "Chat";
mot.insert(3, "ea"); 
// mot devient "Chateau"

// Remplacement
QString phrase = "Il fait froid";
phrase.replace(9, 5, "chaud"); 
// phrase devient "Il fait chaud"

1.4 Suppression de contenu

La méthode remove() permet de retirer une portion de la chaîne soit par index, soit par correspondance de caractères.


QString data = "InterfaceUtilisateur";
data.remove(9, 11); 
// data devient "Interface"

QString clean = "A-B-C-D";
clean.remove(QChar('-'));
// clean devient "ABCD"

2. Recherche et vérification de sous-chaînes

Il est souvent nécessaire de vérifier si une chaîne commence, se termine ou contient un motif particulier.

2.1 startsWith() et endsWith()

Ces fonctions retournent un booléen selon le préfixe ou le suffixe de la chaîne.


QString url = "https://qt.io";
bool isSecure = url.startsWith("https://"); // true

QString file = "document.pdf";
bool isPdf = file.endsWith(".pdf"); // true

2.2 Recherche avec contains()

La méthode contains() vérifie l'existence d'une sous-chaîne. Elle peut ignorer la casse si spécifié.


QString text = "Qt est puissant";
bool hasQt = text.contains("qt", Qt::CaseInsensitive); // true

3. Conversion de types et d'encodage

QString facilite la transition entre les types numériques, les formats de texte et les encodages binaires.

3.1 Conversion vers Entier

La méthode toInt() convertit le texte en nombre. Un pointeur booléen peut être passé pour vérifier la réussite de l'opération.


QString numStr = "42";
int val = numStr.toInt(); // 42

QString hexStr = "FF";
bool ok;
int hexVal = hexStr.toInt(&ok, 16); // 255, ok == true

3.2 Changement de casse

Pour normaliser le texte, on utilise toUpper() ou toLower().


QString original = "Qt Framework";
QString upper = original.toUpper(); // "QT FRAMEWORK"
QString lower = original.toLower(); // "qt framework"

3.3 Encodage UTF-8

Pour transformer une QString (qui utilise l'UTF-16 en interne) en un tableau d'octets compatible avec de nombreux protocoles, on utilise toUtf8().


QString str = "Logiciel";
QByteArray bytes = str.toUtf8();
// 'bytes' contient la représentation binaire en UTF-8

Étiquettes: Qt C++ QString framework GUI-Development

Publié le 14 août à 09h00