Sur cette page

QTextStream Class

La classe QTextStream offre une interface pratique pour la lecture et l'écriture de texte. En savoir plus...

En-tête : #include <QTextStream>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Hérite de : QIODeviceBase

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)
(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)
QTextStreamManipulator qSetFieldWidth(int width)
QTextStreamManipulator qSetPadChar(QChar ch)
QTextStreamManipulator qSetRealNumberPrecision(int precision)

Description détaillée

QTextStream peut fonctionner sur un QIODevice, un QByteArray ou un QString. Grâce aux opérateurs de flux de QTextStream, vous pouvez facilement lire et écrire des mots, des lignes et des nombres. Pour la génération de texte, QTextStream prend en charge des options de mise en forme pour le remplissage et l'alignement des champs, ainsi que la mise en forme 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 les entrées de la console et écrire les sorties sur la console. QTextStream prend en charge les paramètres régionaux et décode automatiquement les entrées standard en utilisant l’encodage approprié. Exemple :

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 laquelle QTextStream opère en appelant ` setDevice()` ou ` setString()`. Vous pouvez vous positionner à un endroit précis en appelant ` seek()`, et ` atEnd()` renverra `true` lorsqu’il ne reste plus de données à lire. Si vous appelez flush(), QTextStream videra toutes les données de son tampon d'écriture vers le périphérique et appellera flush() sur ce dernier.

En interne, QTextStream utilise un tampon basé sur Unicode, et la fonction ` QStringConverter ` est utilisée par QTextStream pour prendre automatiquement en charge différents encodages. Par défaut, l’encodage UTF-8 est utilisé pour la lecture et l’écriture, mais vous pouvez également définir l’encodage en appelant la fonction ` setEncoding()`. La détection automatique d’Unicode est également prise en charge. Lorsque cette fonctionnalité est activée (comportement par défaut), QTextStream détecte le BOM (Byte Order Mark) UTF-8, UTF-16 ou UTF-32 et bascule vers l’encodage UTF approprié lors de la lecture. Par défaut, QTextStream n’écrit pas de BOM, mais vous pouvez activer cette fonctionnalité en appelant ` setGenerateByteOrderMark(true)`. Lorsque QTextStream opère directement sur un ` QString `, l’encodage est désactivé.

Il existe trois méthodes générales pour utiliser QTextStream lors de la lecture de fichiers texte :

  • Par bloc, en appelant ` readLine()` ou ` readAll()`.
  • Mot par mot. QTextStream prend en charge la lecture en continu dans des objets de type ` QString`, ` QByteArray` et des tampons de type `char*`. Les mots sont délimités par un espace, et les espaces en début de ligne sont automatiquement ignorés.
  • Caractère par caractère, via un flux vers des types ` QChar ` ou `char`. Cette méthode est souvent utilisée pour faciliter la gestion des entrées lors de l’analyse de fichiers, indépendamment du codage des caractères et de la sémantique de fin de ligne. Pour ignorer les espaces, 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 ` QFile ` et que vous lisez directement à partir de celui-ci à l’aide de ` QFile::readLine()` au lieu d’utiliser le flux, la position interne du flux de texte ne sera plus 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 base de représentation du nombre. Par exemple, si le nombre commence par « 0x », il est considéré comme étant au format hexadécimal. S’il commence par les chiffres 1 à 9, il est considéré comme étant au format décimal, et ainsi de suite. Vous pouvez définir la base du nombre entier, désactivant ainsi la détection automatique, en appelant la méthode ` 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 mise en forme pour la génération de texte. Vous pouvez définir la largeur des champs et le caractère de remplissage en appelant setFieldWidth() et setPadChar(). Utilisez setFieldAlignment() pour définir l’alignement au sein de 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é. D’autres options de mise en forme des nombres sont également disponibles via setNumberFlags().

À l’instar de ` <iostream> ` dans la bibliothèque C++ standard, `QTextStream` définit également plusieurs fonctions de manipulation globales :

De plus, Qt fournit trois manipulateurs globaux qui prennent un paramètre : qSetFieldWidth(), qSetPadChar() et qSetRealNumberPrecision().

Voir également QDataStream, QIODevice, QFile, QBuffer et QTcpSocket.

Documentation sur les types de membres

enum QTextStream::FieldAlignment

Cette énumération définit comment aligner le texte dans les champs lorsque ceux-ci sont plus larges que le texte qu'ils contiennent.

ConstanteValeurDescription
QTextStream::AlignLeft0Remplissage à droite des champs.
QTextStream::AlignRight1Remplissage à gauche des champs.
QTextStream::AlignCenter2Remplissage des deux côtés du champ.
QTextStream::AlignAccountingStyle3Identique à AlignRight, sauf que le signe d'un nombre est aligné à gauche.

Voir aussi setFieldAlignment().

enum QTextStream::NumberFlag
flags QTextStream::NumberFlags

Cette énumération définit divers indicateurs pouvant être activés pour modifier l'affichage des entiers, des nombres à virgule floats et des nombres à virgule doubles.

ConstanteValeurDescription
QTextStream::ShowBase0x1Affiche la base sous forme de préfixe si celle-ci est 16 (« 0x »), 8 (« 0 ») ou 2 (« 0b »).
QTextStream::ForcePoint0x2Toujours insérer le séparateur décimal dans les nombres, même s'il n'y a pas de décimales.
QTextStream::ForceSign0x4Toujours indiquer le signe dans les nombres, même pour les nombres positifs.
QTextStream::UppercaseBase0x8Utilisez les préfixes de base en majuscules (« 0X », « 0B »).
QTextStream::UppercaseDigits0x10Utilisez des lettres majuscules pour exprimer les chiffres de 10 à 35 au lieu des minuscules.

Le type NumberFlags est un typedef pour QFlags<NumberFlag>. Il stocke une combinaison OR de valeurs NumberFlag.

Voir également setNumberFlags().

enum QTextStream::RealNumberNotation

Cette énumération spécifie les notations à utiliser pour exprimer les valeurs « float » et « double » sous forme de chaînes de caractères.

ConstanteValeurDescription
QTextStream::ScientificNotation2Notation scientifique (indicateur « %e » deprintf()).
QTextStream::FixedNotation1Notation en virgule fixe (indicateur « %f » de la fonctionprintf()).
QTextStream::SmartNotation0Notation scientifique ou à virgule fixe, selon ce qui est le plus pertinent (indicateur ` %g ` de la fonction `printf()`).

Voir également setRealNumberNotation().

enum QTextStream::Status

Cette énumération décrit l'état actuel du flux de texte.

ConstanteValeurDescription
QTextStream::Ok0Le flux de texte fonctionne normalement.
QTextStream::ReadPastEnd1Le flux de texte a lu au-delà de la fin des données présentes dans le périphérique sous-jacent.
QTextStream::ReadCorruptData2Le flux de texte a lu des données corrompues.
QTextStream::WriteFailed3Le flux de texte ne peut pas écrire sur le périphérique sous-jacent.

Voir également status().

Documentation sur les fonctions membres

QTextStream::QTextStream()

Crée un objet QTextStream. Avant de pouvoir l'utiliser pour lire ou écrire, vous devez lui attribuer un périphérique ou une chaîne de caractères.

Voir également setDevice() et setString().

[explicit] QTextStream::QTextStream(QIODevice *device)

Crée un objet QTextStream qui fonctionne sur device.

[explicit] QTextStream::QTextStream(FILE *fileHandle, QIODeviceBase::OpenMode openMode = ReadWrite)

Crée un objet `QTextStream` qui opère sur ` fileHandle`, en utilisant ` openMode ` pour définir le mode d'ouverture. En interne, un objet ` 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)

Crée un objet `QTextStream` qui opère sur ` array`, en utilisant ` openMode ` pour définir le mode d'ouverture. En interne, le tableau est encapsulé dans un objet ` QBuffer`.

[explicit] QTextStream::QTextStream(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)

Crée un objet `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)

Crée un objet QTextStream qui opère sur array, en utilisant openMode pour définir le mode d'ouverture. L'accès au tableau se fait en lecture seule, quelles que soient les valeurs contenues dans openMode.

Ce constructeur est pratique pour travailler sur des chaînes 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 l'QTextStream.

Si le flux s'exécute sur un périphérique, la méthode flush() sera appelée implicitement. Dans le cas contraire, le périphérique n'est pas affecté.

bool QTextStream::atEnd() const

Renvoie « true » s'il n'y a plus de données à lire depuis l'QTextStream; sinon, renvoie « false ». Cette opération est similaire à l'appel de la fonction QIODevice::atEnd(), mais n'est pas identique, car QTextStream prend également en compte son tampon Unicode interne.

bool QTextStream::autoDetectUnicode() const

Renvoie « true » si la détection automatique d'Unicode est activée ; sinon, renvoie « false ». La détection automatique d'Unicode est activée par défaut.

Voir également setAutoDetectUnicode() et setEncoding().

QIODevice *QTextStream::device() const

Renvoie le périphérique actuel associé à l'QTextStream, ou nullptr si aucun périphérique n'a été attribué.

Voir également setDevice() et string().

QStringConverter::Encoding QTextStream::encoding() const

Renvoie le codage actuellement attribué au flux.

Voir également setEncoding(), setAutoDetectUnicode() et locale().

QTextStream::FieldAlignment QTextStream::fieldAlignment() const

Renvoie l'alignement actuel du champ.

Voir également setFieldAlignment() et fieldWidth().

int QTextStream::fieldWidth() const

Renvoie la largeur actuelle du champ.

Voir aussi setFieldWidth().

void QTextStream::flush()

Vide toutes les données mises en mémoire tampon en attente d'écriture sur le périphérique.

Si la fonction ` QTextStream ` porte sur une chaîne de caractères, cette fonction ne fait rien.

bool QTextStream::generateByteOrderMark() const

Renvoie « true » si « QTextStream » est défini pour générer le BOM (Byte Order Mark) UTF lors de l'utilisation d'un encodage UTF ; sinon, renvoie « false ». La génération du BOM UTF est désactivée par défaut.

Voir également setGenerateByteOrderMark().

int QTextStream::integerBase() const

Renvoie la base actuelle des nombres entiers. La valeur 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 également setIntegerBase(), QString::number() et numberFlags().

QLocale QTextStream::locale() const

Renvoie les paramètres régionaux de ce flux. Les paramètres régionaux par défaut sont « C ».

Voir également setLocale().

QTextStream::NumberFlags QTextStream::numberFlags() const

Renvoie les indicateurs de numéro actuels.

Voir également setNumberFlags(), integerBase() et realNumberNotation().

QChar QTextStream::padChar() const

Renvoie le caractère de remplissage actuel.

Voir également 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 en cas d'erreur liée au périphérique).

QTextStream étant mis en mémoire tampon, cette fonction peut être amenée à rechercher le périphérique afin de reconstituer une position valide. Cette opération pouvant être coûteuse en ressources, il est préférable d’éviter d’appeler cette fonction dans une boucle serrée.

Voir également seek().

QString QTextStream::read(qint64 maxlen)

Lit au maximum maxlen caractères à partir du flux et renvoie les données lues sous la forme d'un objet ` QString`.

Voir également readAll(), readLine() et QIODevice::read().

QString QTextStream::readAll()

Lit l'intégralité du contenu du flux et le renvoie sous la forme d'un objet ` QString`. Évitez d'utiliser cette fonction lorsque vous travaillez sur des fichiers volumineux, car elle consomme 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 également readLine().

QString QTextStream::readLine(qint64 maxlen = 0)

Lit une ligne de texte à partir du flux et la renvoie sous la forme d’un objet ` QString`. La longueur maximale autorisée pour une ligne est définie à ` maxlen`. Si le flux contient des lignes plus longues que cette valeur, celles-ci seront fractionnées après ` maxlen ` caractères et renvoyées par parties.

Si maxlen est égal à 0, les lignes peuvent être de n’importe quelle longueur.

La ligne renvoyée ne comporte pas de caractères de fin de ligne («\n » ou «\r\n »), de sorte qu’il n’est pas nécessaire d’appeler QString::trimmed().

Si le flux a été lu jusqu'à la fin du fichier, readLine() renverra une valeur nulle pour QString. Pour les chaînes de caractères, ou pour les périphériques qui le prennent en charge, vous pouvez vérifier explicitement la fin du flux à l'aide de atEnd().

Voir également readAll() et QIODevice::readLine().

bool QTextStream::readLineInto(QString *line, qint64 maxlen = 0)

Lit une ligne de texte à partir du flux et la stocke dans ` line`. Si ` line ` est égal à ` nullptr`, la ligne lue n’est pas stockée.

La longueur maximale autorisée pour une ligne est définie sur maxlen. Si le flux contient des lignes plus longues que cela, celles-ci seront coupées après maxlen caractères et renvoyées par parties.

Si maxlen vaut 0, les lignes peuvent être de n'importe quelle longueur.

La ligne obtenue ne comporte pas de caractères de fin de ligne («\n » ou «\r\n »), de sorte que l’appel à QString::trimmed() peut s’avérer inutile.

Si ` line ` dispose d’une capacité suffisante pour les données sur le point d’être lues, cette fonction n’aura peut-être pas besoin d’allouer de nouvelle mémoire. De ce fait, elle peut s’avérer 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 dans tous les cas ignoré.

Voir également readAll(), QIODevice::readLine() et QIODevice::readLineInto().

QTextStream::RealNumberNotation QTextStream::realNumberNotation() const

Renvoie la notation actuelle des nombres réels.

Voir également setRealNumberNotation(), realNumberPrecision(), numberFlags() et integerBase().

int QTextStream::realNumberPrecision() const

Renvoie la précision actuelle des nombres réels, c'est-à-dire le nombre de chiffres décimaux que QTextStream affichera lors de la génération de nombres réels (FixedNotation, ScientificNotation), ou le nombre maximal de chiffres significatifs (SmartNotation).

Voir également setRealNumberPrecision(), setRealNumberNotation(), realNumberNotation(), numberFlags() et integerBase().

void QTextStream::reset()

Réinitialise les options de mise en forme de ` QTextStream`, le ramenant à son état initial. Le périphérique, la chaîne 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 également QTextStream::Status, status() et setStatus().

bool QTextStream::seek(qint64 pos)

Recherche la position pos dans le périphérique. Renvoie true en cas de succès ; sinon, renvoie false.

void QTextStream::setAutoDetectUnicode(bool enabled)

Si la variable ` enabled ` est définie sur `true`, la fonction ` QTextStream ` tentera de détecter l'encodage Unicode en analysant les données du flux afin de vérifier si elle peut trouver la marque d'ordre des octets (BOM) UTF-8, UTF-16 ou UTF-32. Si cette marque est détectée, la fonction ` QTextStream ` remplacera l'encodage actuel par l'encodage UTF.

Cette fonction peut être utilisée conjointement avec setEncoding(). Il est courant de définir l’encodage sur UTF-8, puis d’activer la détection de l’UTF-16.

Voir également autoDetectUnicode() et setEncoding().

void QTextStream::setDevice(QIODevice *device)

Définit le périphérique actuel sur device. Si un périphérique a déjà été attribué, QTextStream appellera flush() avant de remplacer l'ancien périphérique.

Remarque : cette fonction réinitialise les paramètres régionaux à la valeur par défaut (« C ») et l'encodage à la valeur par défaut, UTF-8.

Voir également device() et setString().

[since 6.0] void QTextStream::setEncoding(QStringConverter::Encoding encoding)

Définit l'encodage de ce flux sur « encoding ». Cet encodage est utilisé pour décoder toutes les données lues à partir du périphérique associé, ainsi que pour encoder toutes les données écrites. Par défaut, l'encodage « QStringConverter::Utf8 » est utilisé et la détection automatique de l'Unicode est activée.

Si ` QTextStream ` s'applique à une chaîne de caractères, cette fonction ne fait rien.

Avertissement : si vous appelez cette fonction alors que le flux de texte est en cours de lecture à partir d’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 également encoding(), setAutoDetectUnicode() et setLocale().

void QTextStream::setFieldAlignment(QTextStream::FieldAlignment mode)

Définit l'alignement du champ sur « mode ». Utilisée conjointement avec la fonction « setFieldWidth() », cette fonction vous permet de générer une sortie formatée avec du texte aligné à gauche, à droite ou au centre.

Voir également fieldAlignment() et setFieldWidth().

void QTextStream::setFieldWidth(int width)

Définit la largeur de champ actuelle sur width. Si width est égal à 0 (valeur par défaut), la largeur de 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 ajoute également des caractères de remplissage à `endl`). Ce comportement diffère de celui des classes similaires de 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ère le BOM (Byte Order Mark) avant que des données ne soient écrites sur le périphérique. Si generate est faux, aucun BOM n'est inséré. Cette fonction doit être appelée avant toute écriture de données. Sinon, elle n'a aucun effet.

Voir également generateByteOrderMark() et bom().

void QTextStream::setIntegerBase(int base)

Définit la base des nombres entiers sur base, tant pour la lecture que pour la génération de nombres. base peut prendre la valeur 2 (binaire), 8 (octal), 10 (décimal) ou 16 (hexadécimal). Si base vaut 0, QTextStream tentera de détecter la base en analysant les données du flux. Lors de la génération de nombres, QTextStream suppose que la base est 10, sauf si celle-ci a été explicitement définie.

Voir également integerBase(), QString::number() et setNumberFlags().

void QTextStream::setLocale(const QLocale &locale)

Définit les paramètres régionaux de ce flux sur locale. Les paramètres régionaux spécifiés sont utilisés pour les conversions entre les nombres et leurs représentations sous forme de chaînes de caractères.

La locale par défaut est C ; il s'agit d'un cas particulier : le séparateur de milliers n'est pas utilisé pour des raisons de compatibilité ascendante.

Voir également locale().

void QTextStream::setNumberFlags(QTextStream::NumberFlags flags)

Définit les indicateurs de nombre actuels sur flags. flags est un ensemble d'indicateurs issus de l'énumération NumberFlag, qui décrit les options de mise en forme du code généré (par exemple, s'il faut ou non toujours indiquer la base ou le signe d'un nombre).

Voir également numberFlags(), setIntegerBase() et setRealNumberNotation().

void QTextStream::setPadChar(QChar ch)

Définit le caractère de remplissage sur « ch ». La valeur par défaut est le caractère ASCII « espace » (« »), soit QChar(0x20). Ce caractère sert à remplir les espaces vides 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 également padChar() et setFieldWidth().

void QTextStream::setRealNumberNotation(QTextStream::RealNumberNotation notation)

Définit la notation des nombres réels sur 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 également realNumberNotation(), setRealNumberPrecision(), setNumberFlags() et setIntegerBase().

void QTextStream::setRealNumberPrecision(int precision)

Définit la précision des nombres réels à precision. Cette valeur indique le nombre de chiffres décimaux que QTextStream doit afficher lors de la génération de 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)

Définit l'état du flux de texte sur l'status e spécifiée.

Les appels suivants à `setStatus()` sont ignorés jusqu’à ce que ` resetStatus()` soit appelé.

Voir également Status, status() et resetStatus().

void QTextStream::setString(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)

Définit la chaîne actuelle sur string, en utilisant l'openMode fournie. Si un périphérique a déjà été attribué, QTextStream appellera flush() avant de le remplacer.

Voir également string() et setDevice().

void QTextStream::skipWhiteSpace()

Lit et ignore les espaces blancs du flux jusqu'à ce qu'un caractère autre qu'un espace soit détecté, ou jusqu'à ce que la fonction atEnd() renvoie la valeur « true ». Cette fonction est utile lors de la lecture d'un flux caractère par caractère.

Les caractères d'espacement sont tous les caractères pour lesquels la fonction ` QChar::isSpace()` renvoie ` true`.

Voir également la fonction ` operator>>()`.

QTextStream::Status QTextStream::status() const

Renvoie l'état du flux de texte.

Voir également QTextStream::Status, setStatus() et resetStatus().

QString *QTextStream::string() const

Renvoie la chaîne de caractères actuellement associée à l'QTextStream, ou nullptr si aucune chaîne n'a été associée.

Voir également setString() et device().

[explicit noexcept, since 6.10] QTextStream::operator bool() const

Indique si ce flux ne présente aucune erreur (la fonction `status()` renvoie ` 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 à l'QTextStream.

Voir aussi setFieldWidth().

QTextStream &QTextStream::operator<<(const QString &string)

Écrit la chaîne « string » dans le flux et renvoie une référence à l'objet ` QTextStream`. La chaîne est d'abord encodée selon l'encodage spécifié (UTF-8 par défaut) avant d'être écrite dans le flux.

Voir également 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 pouvant aller jusqu’à 6 chiffres. Vous pouvez modifier la représentation textuelle que QTextStream utilisera pour les nombres réels en appelant setRealNumberNotation(), setRealNumberPrecision() et setNumberFlags().

Voir également setFieldWidth(), setRealNumberNotation(), setRealNumberPrecision() et setNumberFlags().

QTextStream &QTextStream::operator<<(short i)

Écrit le nombre entier i dans le flux, puis renvoie une référence vers QTextStream. Par défaut, le nombre est stocké sous forme décimale, mais vous pouvez également définir la base en appelant la fonction setIntegerBase().

Voir également setFieldWidth() et setNumberFlags().

QTextStream &QTextStream::operator<<(QLatin1StringView string)

Écrit string dans le flux et renvoie une référence à l'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 à l’ QTextStream.

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

QTextStream &QTextStream::operator<<(char c)

Convertit c du format ASCII au format 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 à l'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 à l'aide de QString::fromUtf8().

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

QTextStream &QTextStream::operator<<(const char *string)

Écrit dans le flux la chaîne constante pointée par ` string `. On suppose que ` string ` est encodée en UTF-8. Cet opérateur est pratique lorsqu'on travaille avec des données de type chaîne constante. Exemple :

QTextStream out(stdout);
out << "Qt rocks!" << Qt::endl;

Avertissement : 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 risque de planter.

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

QTextStream &QTextStream::operator<<(const void *ptr)

Écrit la valeur « 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 la double f e dans le flux.

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

QTextStream &QTextStream::operator<<(int i)

Écrit l'entier signé i dans le flux.

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

QTextStream &QTextStream::operator<<(long i)

Écrit l'i de type long signé dans le flux.

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

QTextStream &QTextStream::operator<<(qlonglong i)

Écrit l'i de type qlonglong dans le flux.

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

QTextStream &QTextStream::operator<<(qulonglong i)

Écrit l'i « qulonglong » dans le flux.

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

QTextStream &QTextStream::operator<<(unsigned int i)

Écrit l'i de type unsigned int dans le flux.

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

QTextStream &QTextStream::operator<<(unsigned long i)

Écrit la valeur « unsigned long » i dans le flux.

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

QTextStream &QTextStream::operator<<(unsigned short i)

Écrit l'i de type unsigned short 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 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 (c'est-à-dire tous les caractères pour lesquels la fonction ` QChar::isSpace()` renvoie ` true`).

Les espaces en début de mot sont ignorés.

QTextStream &QTextStream::operator>>(float &f)

Lit un nombre réel à partir du flux et le stocke dans ` f`, puis renvoie une référence à ` QTextStream`. Le nombre est converti au type approprié. Si aucun nombre réel n’est détecté dans le flux, ` f ` est défini à 0,0.

À titre d’exception, ` QTextStream ` autorise les chaînes « nan » et « inf » pour représenter respectivement les nombres flottants NAN et INF (de type float ou double).

Les espaces en début de chaîne sont ignorés.

QTextStream &QTextStream::operator>>(short &i)

Lit un entier à partir du flux et le stocke dans ` i`, puis renvoie une référence à ` QTextStream`. Le nombre est converti au type approprié avant d'être stocké. Si aucun nombre n'a été détecté dans le flux, ` i ` est défini à 0.

Par défaut, ` QTextStream ` tentera de détecter la base du nombre en utilisant les règles suivantes :

PréfixeBase
« 0b » ou « 0B »2 (binaire)
« 0 » suivi de « 0 à 7 »8 (octal)
« 0 » dans les autres cas10 (décimal)
« 0x » ou « 0X »16 (hexadécimal)
« 1 » à « 9 »10 (décimal)

En appelant la fonction ` setIntegerBase()`, vous pouvez spécifier explicitement la base du nombre entier. Cela désactivera la détection automatique et accélérera légèrement l'QTextStream.

Les espaces en début de ligne sont ignorés.

QTextStream &QTextStream::operator>>(QByteArray &array)

Convertit le mot au format UTF-8, puis l'enregistre dans ` array`.

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

Voir également QString::toLatin1().

QTextStream &QTextStream::operator>>(char &c)

Lit un caractère dans le flux et le stocke dans ` c`. Le caractère provenant du flux est converti au format ISO-8859-1 avant d'être stocké.

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

Voir également QChar::toLatin1().

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

Enregistre le nombre réel dans la variable de type double « f ».

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

QTextStream &QTextStream::operator>>(int &i)

Stocke l'entier dans la variable de type « signed int » i.

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

QTextStream &QTextStream::operator>>(long &i)

Stocke l'entier dans le type « long » signé i.

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

QTextStream &QTextStream::operator>>(qlonglong &i)

Enregistre l'entier dans la variable ` i` de type `qlonglong`.

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

QTextStream &QTextStream::operator>>(qulonglong &i)

Enregistre l'entier dans le champ « qulonglong » i.

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

QTextStream &QTextStream::operator>>(unsigned int &i)

Stocke l'entier dans l'i de type unsigned int.

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

QTextStream &QTextStream::operator>>(unsigned long &i)

Stocke l'entier dans le type « unsigned long » i.

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

QTextStream &QTextStream::operator>>(unsigned short &i)

Stocke l'entier dans l'i de type « unsigned short ».

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

Éléments non membres associé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.