QTextStream Class
La classe QTextStream fournit une interface pratique pour lire et écrire du texte. Plus d'informations...
| En-tête : | #include <QTextStream> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Hérite : | QIODeviceBase |
- Liste de tous les membres, y compris les membres hérités
- QTextStream fait partie de Entrée/Sortie et Mise en réseau et Classes pour les données de type chaîne de caractères.
Remarque : Toutes les fonctions de cette classe sont réentrantes.
Types publics
| enum | FieldAlignment { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle } |
| enum | NumberFlag { ShowBase, ForcePoint, ForceSign, UppercaseBase, UppercaseDigits } |
| flags | NumberFlags |
| enum | RealNumberNotation { ScientificNotation, FixedNotation, SmartNotation } |
| enum | Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed } |
Fonctions publiques
| QTextStream() | |
| QTextStream(QIODevice *device) | |
| QTextStream(FILE *fileHandle, QIODeviceBase::OpenMode openMode = ReadWrite) | |
| QTextStream(QByteArray *array, QIODeviceBase::OpenMode openMode = ReadWrite) | |
| QTextStream(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite) | |
| QTextStream(const QByteArray &array, QIODeviceBase::OpenMode openMode = ReadOnly) | |
| virtual | ~QTextStream() |
| bool | atEnd() const |
| bool | autoDetectUnicode() const |
| QIODevice * | device() const |
| QStringConverter::Encoding | encoding() const |
| QTextStream::FieldAlignment | fieldAlignment() const |
| int | fieldWidth() const |
| void | flush() |
| bool | generateByteOrderMark() const |
| int | integerBase() const |
| QLocale | locale() const |
| QTextStream::NumberFlags | numberFlags() const |
| QChar | padChar() const |
| qint64 | pos() const |
| QString | read(qint64 maxlen) |
| QString | readAll() |
| QString | readLine(qint64 maxlen = 0) |
| bool | readLineInto(QString *line, qint64 maxlen = 0) |
| QTextStream::RealNumberNotation | realNumberNotation() const |
| int | realNumberPrecision() const |
| void | reset() |
| void | resetStatus() |
| bool | seek(qint64 pos) |
| void | setAutoDetectUnicode(bool enabled) |
| void | setDevice(QIODevice *device) |
(since 6.0) void | setEncoding(QStringConverter::Encoding encoding) |
| void | setFieldAlignment(QTextStream::FieldAlignment mode) |
| void | setFieldWidth(int width) |
| void | setGenerateByteOrderMark(bool generate) |
| void | setIntegerBase(int base) |
| void | setLocale(const QLocale &locale) |
| void | setNumberFlags(QTextStream::NumberFlags flags) |
| void | setPadChar(QChar ch) |
| void | setRealNumberNotation(QTextStream::RealNumberNotation notation) |
| void | setRealNumberPrecision(int precision) |
| void | setStatus(QTextStream::Status status) |
| void | setString(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite) |
| void | skipWhiteSpace() |
| QTextStream::Status | status() const |
| QString * | string() const |
(since 6.10) | operator bool() const |
| QTextStream & | operator<<(QChar c) |
| QTextStream & | operator<<(const QString &string) |
| QTextStream & | operator<<(float f) |
| QTextStream & | operator<<(short i) |
| QTextStream & | operator<<(QLatin1StringView string) |
| QTextStream & | operator<<(QStringView string) |
| QTextStream & | operator<<(char c) |
(since 6.3.1) QTextStream & | operator<<(char16_t c) |
| QTextStream & | operator<<(const QByteArray &array) |
| QTextStream & | operator<<(const char *string) |
| QTextStream & | operator<<(const void *ptr) |
| QTextStream & | operator<<(double f) |
| QTextStream & | operator<<(int i) |
| QTextStream & | operator<<(long i) |
| QTextStream & | operator<<(qlonglong i) |
| QTextStream & | operator<<(qulonglong i) |
| QTextStream & | operator<<(unsigned int i) |
| QTextStream & | operator<<(unsigned long i) |
| QTextStream & | operator<<(unsigned short i) |
| QTextStream & | operator>>(QChar &c) |
| QTextStream & | operator>>(QString &str) |
| QTextStream & | operator>>(float &f) |
| QTextStream & | operator>>(short &i) |
| QTextStream & | operator>>(QByteArray &array) |
| QTextStream & | operator>>(char &c) |
| QTextStream & | operator>>(char *c) |
(since 6.4) QTextStream & | operator>>(char16_t &c) |
| QTextStream & | operator>>(double &f) |
| QTextStream & | operator>>(int &i) |
| QTextStream & | operator>>(long &i) |
| QTextStream & | operator>>(qlonglong &i) |
| QTextStream & | operator>>(qulonglong &i) |
| QTextStream & | operator>>(unsigned int &i) |
| QTextStream & | operator>>(unsigned long &i) |
| QTextStream & | operator>>(unsigned short &i) |
Non-membres apparentés
| QTextStreamManipulator | qSetFieldWidth(int width) |
| QTextStreamManipulator | qSetPadChar(QChar ch) |
| QTextStreamManipulator | qSetRealNumberPrecision(int precision) |
Description détaillée
QTextStream peut opérer sur un QIODevice, un QByteArray ou un QString. En utilisant les opérateurs de streaming de QTextStream, vous pouvez lire et écrire des mots, des lignes et des nombres. Pour générer du texte, QTextStream prend en charge les options de formatage pour le remplissage et l'alignement des champs, ainsi que le formatage des nombres. Exemple :
QFile data("output.txt"); if (data.open(QFile::WriteOnly | QFile::Truncate)) { QTextStream out(&data); out << "Result: " << qSetFieldWidth(10) << Qt::left << 3.14 << 2.7; // writes "Result: 3.14 2.7 " }
Il est également courant d'utiliser QTextStream pour lire l'entrée de la console et écrire la sortie de la console. QTextStream tient compte des paramètres linguistiques et décode automatiquement l'entrée standard en utilisant le bon encodage. Exemple : QTextStream
QTextStream stream(stdin); QString line; while (stream.readLineInto(&line)) { //... }
Outre l'utilisation des constructeurs de QTextStream, vous pouvez également définir le périphérique ou la chaîne sur lesquels QTextStream fonctionne en appelant setDevice() ou setString(). Vous pouvez rechercher une position en appelant seek(), et atEnd() renverra vrai lorsqu'il n'y a plus de données à lire. Si vous appelez flush(), QTextStream videra toutes les données de son tampon d'écriture dans le périphérique et appellera flush() sur le périphérique.
En interne, QTextStream utilise un tampon basé sur Unicode, et QStringConverter est utilisé par QTextStream pour supporter automatiquement différents encodages. Par défaut, UTF-8 est utilisé pour la lecture et l'écriture, mais vous pouvez également définir l'encodage en appelant setEncoding(). La détection automatique de l'Unicode est également prise en charge. Lorsque cette fonctionnalité est activée (le comportement par défaut), QTextStream détectera le BOM (Byte Order Mark) UTF-8, UTF-16 ou UTF-32 et passera à l'encodage UTF approprié lors de la lecture. QTextStream n'écrit pas de BOM par défaut, mais vous pouvez l'activer en appelant setGenerateByteOrderMark(true). Lorsque QTextStream opère directement sur QString, l'encodage est désactivé.
Il y a trois façons générales d'utiliser QTextStream lors de la lecture de fichiers texte :
- Morceau par morceau, en appelant readLine() ou readAll().
- Mot par mot. QTextStream prend en charge la lecture en continu dans les tampons QStrings, QByteArrays et char*. Les mots sont délimités par des espaces, et les espaces blancs en début de mot sont automatiquement ignorés.
- Caractère par caractère, en diffusant dans les types QChar ou char. Cette méthode est souvent utilisée pour faciliter la gestion des entrées lors de l'analyse des fichiers, indépendamment du codage des caractères et de la sémantique de fin de ligne. Pour ignorer les espaces blancs, appelez skipWhiteSpace().
Étant donné que le flux de texte utilise un tampon, vous ne devez pas lire à partir du flux en utilisant l'implémentation d'une superclasse. Par exemple, si vous disposez d'un fichier QFile et que vous le lisez directement en utilisant QFile::readLine() au lieu d'utiliser le flux, la position interne du flux de texte ne sera pas synchronisée avec la position du fichier.
Par défaut, lors de la lecture de nombres à partir d'un flux de texte, QTextStream détecte automatiquement la représentation de base du nombre. Par exemple, si le nombre commence par "0x", il est supposé être sous forme hexadécimale. S'il commence par les chiffres 1 à 9, il est supposé être sous forme décimale, et ainsi de suite. Vous pouvez définir la base des nombres entiers, désactivant ainsi la détection automatique, en appelant setIntegerBase(). Exemple :
QTextStream in("0x50 0x20"); int firstNumber, secondNumber; in >> firstNumber; // firstNumber == 80 in >> Qt::dec >> secondNumber; // secondNumber == 0 char ch; in >> ch; // ch == 'x'
QTextStream prend en charge de nombreuses options de formatage pour générer du texte. Vous pouvez définir la largeur du champ et le caractère de remplissage en appelant setFieldWidth() et setPadChar(). Utilisez setFieldAlignment() pour définir l'alignement dans chaque champ. Pour les nombres réels, appelez setRealNumberNotation() et setRealNumberPrecision() pour définir la notation (SmartNotation, ScientificNotation, FixedNotation) et la précision en chiffres du nombre généré. Certaines options supplémentaires de formatage des nombres sont également disponibles via setNumberFlags().
Comme <iostream> dans la bibliothèque C++ standard, QTextStream définit également plusieurs fonctions globales de manipulation :
En outre, Qt XML fournit trois manipulateurs globaux qui prennent un paramètre : qSetFieldWidth(), qSetPadChar(), et qSetRealNumberPrecision().
Voir aussi QDataStream, QIODevice, QFile, QBuffer, et QTcpSocket.
Documentation sur les types de membres
enum QTextStream::FieldAlignment
Cette énumération indique comment aligner le texte dans les champs lorsque le champ est plus large que le texte qui l'occupe.
| Constante | Valeur | Description |
|---|---|---|
QTextStream::AlignLeft | 0 | Remplir le côté droit des champs. |
QTextStream::AlignRight | 1 | Alignement sur le côté gauche du champ. |
QTextStream::AlignCenter | 2 | Remplissage des deux côtés du champ. |
QTextStream::AlignAccountingStyle | 3 | Identique à AlignRight, sauf que le signe d'un nombre est aligné à gauche. |
Voir aussi setFieldAlignment().
enum QTextStream::NumberFlag
flags QTextStream::NumberFlags
Cette énumération spécifie divers drapeaux qui peuvent être définis pour affecter la sortie des nombres entiers, floats, et doubles.
| Constante | Valeur | Description |
|---|---|---|
QTextStream::ShowBase | 0x1 | Affiche la base sous forme de préfixe si la base est 16 ("0x"), 8 ("0") ou 2 ("0b"). |
QTextStream::ForcePoint | 0x2 | Toujours mettre le séparateur décimal dans les nombres, même s'il n'y a pas de décimales. |
QTextStream::ForceSign | 0x4 | Mettez toujours le signe dans les nombres, même pour les nombres positifs. |
QTextStream::UppercaseBase | 0x8 | Utilisez les versions majuscules des préfixes de base ("0X", "0B"). |
QTextStream::UppercaseDigits | 0x10 | Utilisez des lettres majuscules pour exprimer les chiffres de 10 à 35 plutôt que des lettres minuscules. |
Le type NumberFlags est un typedef pour QFlags<NumberFlag>. Il stocke une combinaison OU de valeurs NumberFlag.
Voir également setNumberFlags().
enum QTextStream::RealNumberNotation
Cette énumération spécifie les notations à utiliser pour exprimer float et double sous forme de chaînes de caractères.
| Constante | Valeur | Description |
|---|---|---|
QTextStream::ScientificNotation | 2 | Notation scientifique (printf()'s %e flag). |
QTextStream::FixedNotation | 1 | Notation en virgule fixe (printf()'s %f flag). |
QTextStream::SmartNotation | 0 | Notation scientifique ou en virgule fixe, selon ce qui est le plus logique (printf()'s %g flag). |
Voir aussi setRealNumberNotation().
enum QTextStream::Status
Cette énumération décrit l'état actuel du flux de texte.
| Constante | Valeur | Description |
|---|---|---|
QTextStream::Ok | 0 | Le flux de texte fonctionne normalement. |
QTextStream::ReadPastEnd | 1 | Le flux de texte a dépassé la fin des données dans le périphérique sous-jacent. |
QTextStream::ReadCorruptData | 2 | Le flux de texte a lu des données corrompues. |
QTextStream::WriteFailed | 3 | Le flux de texte ne peut pas écrire sur le périphérique sous-jacent. |
Voir également status().
Documentation des fonctions membres
QTextStream::QTextStream()
Construit un QTextStream. Avant de pouvoir l'utiliser en lecture ou en écriture, vous devez lui attribuer un périphérique ou une chaîne de caractères.
Voir aussi setDevice() et setString().
[explicit] QTextStream::QTextStream(QIODevice *device)
Construit un QTextStream qui opère sur device.
[explicit] QTextStream::QTextStream(FILE *fileHandle, QIODeviceBase::OpenMode openMode = ReadWrite)
Construit un QTextStream qui opère sur fileHandle, en utilisant openMode pour définir le mode d'ouverture. En interne, un QFile est créé pour gérer le pointeur FILE.
Ce constructeur est utile pour travailler directement avec les flux d'entrée et de sortie courants basés sur FILE : stdin, stdout et stderr. Exemple :
QString str; QTextStream in(stdin); in >> str;
[explicit] QTextStream::QTextStream(QByteArray *array, QIODeviceBase::OpenMode openMode = ReadWrite)
Construit un QTextStream qui opère sur array, en utilisant openMode pour définir le mode d'ouverture. En interne, le tableau est enveloppé par un QBuffer.
[explicit] QTextStream::QTextStream(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)
Construit un QTextStream qui opère sur string, en utilisant openMode pour définir le mode d'ouverture.
[explicit] QTextStream::QTextStream(const QByteArray &array, QIODeviceBase::OpenMode openMode = ReadOnly)
Construit un QTextStream qui opère sur array, en utilisant openMode pour définir le mode d'ouverture. Le tableau est accessible en lecture seule, quelles que soient les valeurs de openMode.
Ce constructeur est pratique pour travailler sur des chaînes de caractères constantes. Exemple :
int main(int argc, char *argv[]) { // read numeric arguments (123, 0x20, 4.5...) for (int i = 1; i < argc; ++i) { int number; QTextStream in(argv[i]); in >> number; //... } }
[virtual noexcept] QTextStream::~QTextStream()
Détruit le fichier QTextStream.
Si le flux fonctionne sur un périphérique, flush() sera appelé implicitement. Sinon, le périphérique n'est pas affecté.
bool QTextStream::atEnd() const
Renvoie true s'il n'y a plus de données à lire dans QTextStream; sinon, renvoie false. Ceci est similaire, mais pas identique à l'appel à QIODevice::atEnd(), car QTextStream prend également en compte son tampon Unicode interne.
bool QTextStream::autoDetectUnicode() const
Renvoie true si la détection automatique de l'Unicode est activée, sinon renvoie false. La détection automatique d'Unicode est activée par défaut.
Voir aussi setAutoDetectUnicode() et setEncoding().
QIODevice *QTextStream::device() const
Renvoie le dispositif actuel associé à QTextStream, ou nullptr si aucun dispositif n'a été attribué.
Voir aussi setDevice() et string().
QStringConverter::Encoding QTextStream::encoding() const
Renvoie l'encodage actuellement attribué au flux.
Voir aussi setEncoding(), setAutoDetectUnicode(), et locale().
QTextStream::FieldAlignment QTextStream::fieldAlignment() const
Renvoie l'alignement actuel du champ.
Voir aussi setFieldAlignment() et fieldWidth().
int QTextStream::fieldWidth() const
Renvoie la largeur actuelle du champ.
Voir aussi setFieldWidth().
void QTextStream::flush()
Vide les données en mémoire tampon qui attendent d'être écrites sur le périphérique.
Si QTextStream opère sur une chaîne de caractères, cette fonction ne fait rien.
bool QTextStream::generateByteOrderMark() const
Renvoie true si QTextStream est configuré pour générer le BOM UTF (Byte Order Mark) lors de l'utilisation d'un encodage UTF ; sinon, renvoie false. La génération de la nomenclature UTF est définie à false par défaut.
Voir aussi setGenerateByteOrderMark().
int QTextStream::integerBase() const
Renvoie la base actuelle des nombres entiers. 0 signifie que la base est détectée lors de la lecture, ou 10 (décimal) lors de la génération de nombres.
Voir aussi setIntegerBase(), QString::number() et numberFlags().
QLocale QTextStream::locale() const
Renvoie la locale de ce flux. La locale par défaut est C.
Voir aussi setLocale().
QTextStream::NumberFlags QTextStream::numberFlags() const
Renvoie le nombre actuel de drapeaux.
Voir aussi setNumberFlags(), integerBase(), et realNumberNotation().
QChar QTextStream::padChar() const
Renvoie le caractère de remplissage actuel.
Voir aussi setPadChar() et setFieldWidth().
qint64 QTextStream::pos() const
Renvoie la position du périphérique correspondant à la position actuelle du flux, ou -1 en cas d'erreur (par exemple, s'il n'y a pas de périphérique ou de chaîne, ou s'il y a une erreur de périphérique).
Comme QTextStream est mis en mémoire tampon, cette fonction peut avoir à rechercher le périphérique pour reconstruire une position de périphérique valide. Cette opération peut être coûteuse, c'est pourquoi il est préférable d'éviter d'appeler cette fonction dans une boucle serrée.
Voir aussi seek().
QString QTextStream::read(qint64 maxlen)
Lit au maximum maxlen caractères dans le flux et renvoie les données lues sous forme de QString.
Voir aussi readAll(), readLine() et QIODevice::read().
QString QTextStream::readAll()
Lit l'intégralité du contenu du flux et le renvoie sous la forme d'un fichier QString. Évitez cette fonction si vous travaillez sur des fichiers volumineux, car elle consommera une quantité importante de mémoire.
Il est préférable d'appeler readLine() si vous ne connaissez pas la quantité de données disponibles.
Voir aussi readLine().
QString QTextStream::readLine(qint64 maxlen = 0)
Lit une ligne de texte dans le flux et la renvoie sous forme de QString. La longueur de ligne maximale autorisée est fixée à maxlen. Si le flux contient des lignes plus longues, celles-ci seront divisées après maxlen caractères et renvoyées en plusieurs parties.
Si maxlen vaut 0, les lignes peuvent être de n'importe quelle longueur.
La ligne renvoyée ne contient pas de caractères de fin de ligne ("\n" ou "\r\n "), de sorte que l'appel à QString::trimmed() peut être inutile.
Si le flux a lu jusqu'à la fin du fichier, readLine() renvoie une valeur nulle QString. Pour les chaînes de caractères, ou pour les périphériques qui le supportent, vous pouvez tester explicitement la fin du flux en utilisant atEnd().
Voir également readAll() et QIODevice::readLine().
bool QTextStream::readLineInto(QString *line, qint64 maxlen = 0)
Lit une ligne de texte du flux dans line. Si line est nullptr, la ligne lue n'est pas stockée.
La longueur de ligne maximale autorisée est fixée à maxlen. Si le flux contient des lignes plus longues, celles-ci seront scindées après maxlen caractères et renvoyées en plusieurs parties.
Si maxlen vaut 0, les lignes peuvent être de n'importe quelle longueur.
La ligne résultante ne comporte pas de caractères de fin de ligne ("\n" ou "\r\n "), de sorte que l'appel à QString::trimmed() peut être inutile.
Si line a une capacité suffisante pour les données qui vont être lues, cette fonction peut ne pas avoir besoin d'allouer de nouvelle mémoire. C'est pourquoi elle peut être plus rapide que readLine().
Renvoie false si le flux a lu jusqu'à la fin du fichier ou si une erreur s'est produite ; sinon, renvoie true. Le contenu de line avant l'appel est supprimé dans tous les cas.
Voir également readAll(), QIODevice::readLine() et QIODevice::readLineInto().
QTextStream::RealNumberNotation QTextStream::realNumberNotation() const
Renvoie la notation actuelle des nombres réels.
Voir aussi setRealNumberNotation(), realNumberPrecision(), numberFlags(), et integerBase().
int QTextStream::realNumberPrecision() const
Renvoie la précision actuelle des nombres réels, ou le nombre de chiffres de la fraction que QTextStream écrira lors de la génération de nombres réels (FixedNotation, ScientificNotation), ou le nombre maximum de chiffres significatifs (SmartNotation).
Voir aussi setRealNumberPrecision(), setRealNumberNotation(), realNumberNotation(), numberFlags(), et integerBase().
void QTextStream::reset()
Réinitialise les options de formatage de QTextStream, le ramenant à son état de construction d'origine. Le périphérique, la chaîne de caractères et toutes les données mises en mémoire tampon restent inchangés.
void QTextStream::resetStatus()
Réinitialise l'état du flux de texte.
Voir aussi QTextStream::Status, status(), et setStatus().
bool QTextStream::seek(qint64 pos)
Recherche la position pos dans le dispositif. Renvoie true en cas de succès, sinon false.
void QTextStream::setAutoDetectUnicode(bool enabled)
Si enabled est vrai, QTextStream tentera de détecter le codage Unicode en examinant les données du flux pour voir s'il peut trouver la marque d'ordre des octets (BOM) UTF-8, UTF-16 ou UTF-32. Si cette marque est trouvée, QTextStream remplacera le codage actuel par le codage UTF.
Cette fonction peut être utilisée conjointement avec setEncoding(). Il est courant de définir l'encodage en UTF-8, puis d'activer la détection de l'UTF-16.
Voir aussi autoDetectUnicode() et setEncoding().
void QTextStream::setDevice(QIODevice *device)
Définit le périphérique actuel à device. Si un périphérique a déjà été assigné, QTextStream appellera flush() avant que l'ancien périphérique ne soit remplacé.
Note : Cette fonction réinitialise la locale à la locale par défaut ('C') et l'encodage à l'encodage par défaut, UTF-8.
Voir aussi device() et setString().
[since 6.0] void QTextStream::setEncoding(QStringConverter::Encoding encoding)
Définit l'encodage de ce flux à encoding. L'encodage est utilisé pour décoder toutes les données lues depuis le périphérique assigné et pour encoder toutes les données écrites. Par défaut, QStringConverter::Utf8 est utilisé et la détection automatique de l'unicode est activée.
Si QTextStream opère sur une chaîne de caractères, cette fonction ne fait rien.
Attention : Si vous appelez cette fonction alors que le flux de texte est en train de lire un socket séquentiel ouvert, le tampon interne peut encore contenir du texte décodé à l'aide de l'ancien encodage.
Cette fonction a été introduite dans Qt 6.0.
Voir aussi encoding(), setAutoDetectUnicode(), et setLocale().
void QTextStream::setFieldAlignment(QTextStream::FieldAlignment mode)
Définit l'alignement du champ sur mode. Utilisée avec setFieldWidth(), cette fonction vous permet de générer une sortie formatée avec un texte aligné à gauche, à droite ou au centre.
Voir également fieldAlignment() et setFieldWidth().
void QTextStream::setFieldWidth(int width)
Fixe la largeur du champ actuel à width. Si width vaut 0 (valeur par défaut), la largeur du champ est égale à la longueur du texte généré.
Remarque : La largeur de champ s'applique à chaque élément ajouté à ce flux après l'appel de cette fonction (par exemple, elle remplit également endl). Ce comportement est différent de celui de classes similaires dans la STL, où la largeur de champ ne s'applique qu'à l'élément suivant.
Voir également fieldWidth() et setPadChar().
void QTextStream::setGenerateByteOrderMark(bool generate)
Si generate est vrai et qu'un encodage UTF est utilisé, QTextStream insérera le BOM (Byte Order Mark) avant que toute donnée n'ait été écrite sur le périphérique. Si generate est faux, aucun BOM ne sera inséré. Cette fonction doit être appelée avant que des données ne soient écrites. Sinon, elle ne fait rien.
Voir également generateByteOrderMark() et bom().
void QTextStream::setIntegerBase(int base)
Définit la base des entiers à base, à la fois pour la lecture et pour la génération de nombres. base peut être 2 (binaire), 8 (octal), 10 (décimal) ou 16 (hexadécimal). Si base vaut 0, QTextStream tentera de détecter la base en inspectant les données sur le flux. Lors de la génération de nombres, QTextStream suppose que la base est 10, à moins que la base n'ait été définie explicitement.
Voir aussi integerBase(), QString::number() et setNumberFlags().
void QTextStream::setLocale(const QLocale &locale)
Définit la locale de ce flux à locale. La locale spécifiée est utilisée pour les conversions entre les nombres et leurs représentations sous forme de chaîne de caractères.
La locale par défaut est C et il s'agit d'un cas particulier - le séparateur de groupes de milliers n'est pas utilisé pour des raisons de compatibilité ascendante.
Voir aussi locale().
void QTextStream::setNumberFlags(QTextStream::NumberFlags flags)
Définit les drapeaux de nombres actuels à flags. flags est un ensemble de drapeaux de l'enum NumberFlag, et décrit les options de formatage du code généré (par exemple, s'il faut toujours écrire la base ou le signe d'un nombre).
Voir aussi numberFlags(), setIntegerBase(), et setRealNumberNotation().
void QTextStream::setPadChar(QChar ch)
Définit le caractère de remplissage à ch. La valeur par défaut est le caractère espace ASCII (' '), ou QChar(0x20). Ce caractère est utilisé pour remplir les espaces dans les champs lors de la génération de texte.
Exemple :
QString s; QTextStream out(&s); out.setFieldWidth(10); out.setFieldAlignment(QTextStream::AlignCenter); out.setPadChar('-'); out << "Qt" << "rocks!";
La chaîne s contient :
----Qt------rocks!--
Voir aussi padChar() et setFieldWidth().
void QTextStream::setRealNumberNotation(QTextStream::RealNumberNotation notation)
Définit la notation des nombres réels à notation (SmartNotation, FixedNotation, ScientificNotation). Lors de la lecture et de la génération de nombres, QTextStream utilise cette valeur pour détecter le formatage des nombres réels.
Voir aussi realNumberNotation(), setRealNumberPrecision(), setNumberFlags(), et setIntegerBase().
void QTextStream::setRealNumberPrecision(int precision)
Définit la précision des nombres réels à precision. Cette valeur décrit le nombre de chiffres de la fraction que QTextStream doit écrire lorsqu'il génère des nombres réels (FixedNotation, ScientificNotation), ou le nombre maximal de chiffres significatifs (SmartNotation).
La précision ne peut pas être une valeur négative. La valeur par défaut est 6.
Voir également realNumberPrecision() et setRealNumberNotation().
void QTextStream::setStatus(QTextStream::Status status)
Fixe l'état du flux de texte à l'adresse status.
Les appels ultérieurs à setStatus() sont ignorés jusqu'à ce que resetStatus() soit appelé.
Voir aussi Status, status(), et resetStatus().
void QTextStream::setString(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)
Définit la chaîne actuelle à string, en utilisant la chaîne donnée openMode. Si un périphérique a déjà été attribué, QTextStream appellera flush() avant de le remplacer.
Voir aussi string() et setDevice().
void QTextStream::skipWhiteSpace()
Lit et élimine les espaces blancs du flux jusqu'à ce qu'un caractère autre qu'un espace soit détecté, ou jusqu'à ce que atEnd() renvoie un résultat positif. Cette fonction est utile pour lire un flux caractère par caractère.
Les caractères d'espacement sont tous les caractères pour lesquels QChar::isSpace() renvoie true.
Voir également operator>>().
QTextStream::Status QTextStream::status() const
Renvoie l'état du flux de texte.
Voir aussi QTextStream::Status, setStatus(), et resetStatus().
QString *QTextStream::string() const
Renvoie la chaîne de caractères actuelle attribuée à QTextStream, ou nullptr si aucune chaîne de caractères n'a été attribuée.
Voir aussi setString() et device().
[explicit noexcept, since 6.10] QTextStream::operator bool() const
Retourne si ce flux n'a pas d'erreurs (status() retourne Ok).
Cette fonction a été introduite dans Qt 6.10.
QTextStream &QTextStream::operator<<(QChar c)
Écrit le caractère c dans le flux, puis renvoie une référence à QTextStream.
Voir aussi setFieldWidth().
QTextStream &QTextStream::operator<<(const QString &string)
Écrit la chaîne string dans le flux et renvoie une référence à QTextStream. La chaîne est d'abord encodée en utilisant l'encodage assigné (par défaut UTF-8) avant d'être écrite dans le flux.
Voir aussi setFieldWidth() et setEncoding().
QTextStream &QTextStream::operator<<(float f)
Écrit le nombre réel f dans le flux, puis renvoie une référence à QTextStream. Par défaut, QTextStream le stocke en utilisant SmartNotation, avec une précision maximale de 6 chiffres. Vous pouvez modifier la représentation textuelle que QTextStream utilisera pour les nombres réels en appelant setRealNumberNotation(), setRealNumberPrecision() et setNumberFlags().
Voir aussi setFieldWidth(), setRealNumberNotation(), setRealNumberPrecision() et setNumberFlags().
QTextStream &QTextStream::operator<<(short i)
Écrit le nombre entier i dans le flux, puis renvoie une référence à QTextStream. Par défaut, le nombre est stocké sous forme décimale, mais vous pouvez également définir la base en appelant setIntegerBase().
Voir également setFieldWidth() et setNumberFlags().
QTextStream &QTextStream::operator<<(QLatin1StringView string)
Écrit string dans le flux et renvoie une référence à QTextStream.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(QStringView string)
Écrit string dans le flux et renvoie une référence à QTextStream.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(char c)
Convertit c d'ASCII en QChar, puis l'écrit dans le flux.
Il s'agit d'une fonction surchargée.
[since 6.3.1] QTextStream &QTextStream::operator<<(char16_t c)
Écrit le caractère Unicode c dans le flux, puis renvoie une référence à QTextStream.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.3.1.
QTextStream &QTextStream::operator<<(const QByteArray &array)
Écrit array dans le flux. Le contenu de array est converti avec QString::fromUtf8().
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(const char *string)
Écrit la chaîne de caractères constante indiquée par string dans le flux. string est supposé être codé en UTF-8. Cet opérateur est pratique pour travailler avec des données de chaînes constantes. Exemple :
QTextStream out(stdout); out << "Qt rocks!" << Qt::endl;
Attention : QTextStream suppose que string pointe vers une chaîne de texte, terminée par un caractère '\0'. S'il n'y a pas de caractère de fin '\0', votre application peut se bloquer.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(const void *ptr)
Écrit ptr dans le flux sous la forme d'un nombre hexadécimal avec une base.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(double f)
Écrit le double f dans le flux.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(int i)
Écrit l'int signé i dans le flux.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(long i)
Écrit le long signé i dans le flux.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(qlonglong i)
Écrit le qlonglong i dans le flux.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(qulonglong i)
Écrit le qulonglong i dans le flux.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(unsigned int i)
Écrit l'int non signé i dans le flux.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(unsigned long i)
Écrit le long non signé i dans le flux.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator<<(unsigned short i)
Écrit la valeur non signée i dans le flux.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator>>(QChar &c)
Lit un caractère dans le flux et le stocke dans c. Renvoie une référence à QTextStream, ce qui permet d'imbriquer plusieurs opérateurs. Exemple :
QTextStream in(file); QChar ch1, ch2, ch3; in >> ch1 >> ch2 >> ch3;
Les espaces blancs ne sont pas ignorés.
QTextStream &QTextStream::operator>>(QString &str)
Lit un mot dans le flux et le stocke dans str, puis renvoie une référence au flux. Les mots sont séparés par des espaces blancs (c'est-à-dire tous les caractères pour lesquels QChar::isSpace() renvoie true).
Les espaces blancs en début de mot sont ignorés.
QTextStream &QTextStream::operator>>(float &f)
Lit un nombre réel dans le flux et le stocke dans f, puis renvoie une référence à QTextStream. Le nombre est converti dans le type correct. Si aucun nombre réel n'est détecté dans le flux, f prend la valeur 0,0.
À titre d'exception, QTextStream autorise les chaînes de caractères "nan" et "inf" à représenter des nombres flottants ou doubles NAN et INF.
Les espaces blancs en début de chaîne sont ignorés.
QTextStream &QTextStream::operator>>(short &i)
Lit un nombre entier dans le flux et le stocke dans i, puis renvoie une référence à QTextStream. Le nombre est converti dans le type correct avant d'être stocké. Si aucun nombre n'a été détecté dans le flux, i est mis à 0.
Par défaut, QTextStream tente de détecter la base du nombre à l'aide des règles suivantes :
| Préfixe | Base |
|---|---|
| "0b" ou "0B" | 2 (binaire) |
| "0" suivi de "0-7" | 8 (octal) |
| "0" autrement | 10 (décimal) |
| "0x" ou "0X" | 16 (hexadécimal) |
| "1 à 9 | 10 (décimal) |
En appelant setIntegerBase(), vous pouvez spécifier explicitement la base des entiers. Cela désactivera l'auto-détection et accélérera légèrement QTextStream.
Les espaces blancs sont ignorés.
QTextStream &QTextStream::operator>>(QByteArray &array)
Convertit le mot en UTF-8, puis le stocke dans array.
Il s'agit d'une fonction surchargée.
Voir aussi QString::toLatin1().
QTextStream &QTextStream::operator>>(char &c)
Lit un caractère dans le flux et le stocke dans c. Le caractère du flux est converti en ISO-8859-1 avant d'être stocké.
Il s'agit d'une fonction surchargée.
Voir aussi QChar::toLatin1().
QTextStream &QTextStream::operator>>(char *c)
Convertit le mot en UTF-8 et le stocke dans c, terminé par un caractère '\0'. Si aucun mot n'est disponible, seul le caractère '\0' est stocké.
Attention : Bien que pratique, cet opérateur est dangereux et doit être utilisé avec précaution. QTextStream suppose que c pointe vers un tampon disposant de suffisamment d'espace pour contenir le mot. Si le tampon est trop petit, votre application risque de se bloquer. Pour un mot composé de n QChars, la mémoire tampon doit contenir au moins 3*n+1 caractères.
Si possible, utilisez plutôt l'opérateur QByteArray.
Il s'agit d'une fonction surchargée.
[since 6.4] QTextStream &QTextStream::operator>>(char16_t &c)
Lit un caractère dans le flux et le stocke dans c.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.4.
QTextStream &QTextStream::operator>>(double &f)
Stocke le nombre réel dans le double f.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator>>(int &i)
Stocke l'entier dans l'int signé i.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator>>(long &i)
Stocke l'entier dans le signed long i.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator>>(qlonglong &i)
Enregistre l'entier dans le qlonglong i.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator>>(qulonglong &i)
Stocke l'entier dans le qulonglong i.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator>>(unsigned int &i)
Stocke l'entier dans l'int non signé i.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator>>(unsigned long &i)
Stocke l'entier dans le unsigned long i.
Il s'agit d'une fonction surchargée.
QTextStream &QTextStream::operator>>(unsigned short &i)
Stocke l'entier dans le short non signé i.
Il s'agit d'une fonction surchargée.
Non-membres apparentés
QTextStreamManipulator qSetFieldWidth(int width)
Équivalent à QTextStream::setFieldWidth(width).
QTextStreamManipulator qSetPadChar(QChar ch)
Équivalent à QTextStream::setPadChar(ch).
QTextStreamManipulator qSetRealNumberPrecision(int precision)
Équivalent à QTextStream::setRealNumberPrecision(precision).
© 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.