Auf dieser Seite

QTextStream Class

Die Klasse „QTextStream“ bietet eine praktische Schnittstelle zum Lesen und Schreiben von Text. Mehr...

Header: #include <QTextStream>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: QIODeviceBase

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Öffentliche Typen

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 }

Öffentliche Funktionen

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)

Ausführliche Beschreibung

QTextStream kann mit einem „ QIODevice “, einem „ QByteArray “ oder einem „ QString “ arbeiten. Mit den Streaming-Operatoren von QTextStream können Sie Wörter, Zeilen und Zahlen bequem lesen und schreiben. Zum Erzeugen von Text unterstützt QTextStream Formatierungsoptionen für die Feldauffüllung und -ausrichtung sowie die Formatierung von Zahlen. Beispiel:

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       "
}

Häufig wird QTextStream auch zum Einlesen von Konsoleneingaben und zum Schreiben von Konsolenausgaben verwendet. QTextStream ist lokalisierungsfähig und dekodiert die Standardeingabe automatisch mit der richtigen Kodierung. Beispiel:

QTextStream stream(stdin);
QString line;
while (stream.readLineInto(&line)) {
    //...
}

Neben der Verwendung der Konstruktoren von QTextStream können Sie das Gerät oder die Zeichenkette, auf die QTextStream wirkt, auch durch Aufruf von ` setDevice()` oder ` setString()` festlegen. Mit ` seek()` können Sie zu einer bestimmten Position springen, und ` atEnd()` gibt „true“ zurück, wenn keine Daten mehr zum Lesen vorhanden sind. Wenn Sie ` flush()` aufrufen, leert QTextStream alle Daten aus seinem Schreibpuffer in das Gerät und ruft dort ` flush()` auf.

Intern verwendet QTextStream einen Unicode-basierten Puffer, und QTextStream nutzt „ QStringConverter “, um verschiedene Kodierungen automatisch zu unterstützen. Standardmäßig wird UTF-8 zum Lesen und Schreiben verwendet, Sie können die Kodierung jedoch auch durch Aufruf von „ setEncoding()“ festlegen. Die automatische Unicode-Erkennung wird ebenfalls unterstützt. Wenn diese Funktion aktiviert ist (Standardverhalten), erkennt QTextStream das UTF-8-, UTF-16- oder UTF-32-BOM (Byte Order Mark) und wechselt beim Lesen zur entsprechenden UTF-Kodierung. QTextStream schreibt standardmäßig kein BOM, Sie können dies jedoch durch den Aufruf von ` setGenerateByteOrderMark(true)` aktivieren. Wenn QTextStream direkt mit einem ` QString ` arbeitet, ist die Kodierung deaktiviert.

Es gibt drei allgemeine Möglichkeiten, QTextStream beim Lesen von Textdateien zu verwenden:

  • Chunk für Chunk durch Aufruf von ` readLine()` oder ` readAll()`.
  • Wort für Wort. QTextStream unterstützt das Einlesen in ` QString`-Objekte, ` QByteArray`-Objekte und `char*`-Puffer. Wörter werden durch Leerzeichen getrennt, und führende Leerzeichen werden automatisch übersprungen.
  • Zeichen für Zeichen, durch Streaming in ` QChar `- oder `char`-Typen. Diese Methode wird häufig für eine komfortable Eingabeverarbeitung beim Parsen von Dateien verwendet, unabhängig von der Zeichenkodierung und der Zeilenende-Semantik. Um Leerzeichen zu überspringen, rufen Sie ` skipWhiteSpace()` auf.

Da der Textstrom einen Puffer verwendet, sollten Sie nicht mit der Implementierung einer Oberklasse aus dem Strom lesen. Wenn Sie beispielsweise ein ` QFile ` haben und direkt mit ` QFile::readLine()` daraus lesen, anstatt den Strom zu verwenden, gerät die interne Position des Textstroms gegenüber der Position in der Datei aus dem Takt.

Standardmäßig erkennt QTextStream beim Lesen von Zahlen aus einem Textstrom automatisch die Zahlendarstellung (Basis). Beginnt die Zahl beispielsweise mit „0x“, wird davon ausgegangen, dass sie im Hexadezimalformat vorliegt. Beginnt sie mit den Ziffern 1–9, wird davon ausgegangen, dass sie im Dezimalformat vorliegt, und so weiter. Sie können die Zahlensystembasis festlegen und damit die automatische Erkennung deaktivieren, indem Sie ` setIntegerBase()` aufrufen. Beispiel:

QTextStream in("0x50 0x20");
int firstNumber, secondNumber;

in >> firstNumber;             // firstNumber == 80
in >> Qt::dec >> secondNumber;     // secondNumber == 0

char ch;
in >> ch;                      // ch == 'x'

QTextStream unterstützt zahlreiche Formatierungsoptionen zur Textgenerierung. Sie können die Feldbreite und das Auffüllzeichen festlegen, indem Sie ` setFieldWidth()` und ` setPadChar()` aufrufen. Verwenden Sie ` setFieldAlignment()`, um die Ausrichtung innerhalb jedes Feldes festzulegen. Für reelle Zahlen rufen Sie „ setRealNumberNotation()“ und „ setRealNumberPrecision()“ auf, um die Schreibweise (SmartNotation, ScientificNotation, FixedNotation) und die Genauigkeit in Ziffern der generierten Zahl festzulegen. Einige zusätzliche Optionen zur Zahlenformatierung stehen zudem über „ setNumberFlags()“ zur Verfügung.

Ähnlich wie „ <iostream> “ in der Standard-C++-Bibliothek definiert auch QTextStream mehrere globale Manipulatorfunktionen:

Darüber hinaus stellt Qt drei globale Manipulatoren bereit, die einen Parameter entgegennehmen: qSetFieldWidth(), qSetPadChar() und qSetRealNumberPrecision().

Siehe auch QDataStream, QIODevice, QFile, QBuffer und QTcpSocket.

Dokumentation zu Mitgliedstypen

enum QTextStream::FieldAlignment

Diese Enumeration legt fest, wie Text in Feldern ausgerichtet werden soll, wenn das Feld breiter ist als der darin enthaltene Text.

KonstanteWertBeschreibung
QTextStream::AlignLeft0Auffüllen auf der rechten Seite der Felder.
QTextStream::AlignRight1Auffüllen auf der linken Seite der Felder.
QTextStream::AlignCenter2Beidseitiges Ausrichten des Feldes.
QTextStream::AlignAccountingStyle3Entspricht „AlignRight“, mit dem Unterschied, dass das Vorzeichen einer Zahl linksbündig ausgerichtet wird.

Siehe auch „ setFieldAlignment()“.

enum QTextStream::NumberFlag
flags QTextStream::NumberFlags

Diese Enumeration definiert verschiedene Flags, die gesetzt werden können, um die Ausgabe von Ganzzahlen, „ float“ und „ double“ zu beeinflussen.

KonstanteWertBeschreibung
QTextStream::ShowBase0x1Zeigt die Basis als Präfix an, wenn die Basis 16 („0x“), 8 („0“) oder 2 („0b“) ist.
QTextStream::ForcePoint0x2Fügt in Zahlen immer das Dezimaltrennzeichen ein, auch wenn keine Dezimalstellen vorhanden sind.
QTextStream::ForceSign0x4Fügen Sie in Zahlen immer das Vorzeichen ein, auch bei positiven Zahlen.
QTextStream::UppercaseBase0x8Verwenden Sie Großbuchstaben für die Basispräfixe („0X“, „0B“).
QTextStream::UppercaseDigits0x10Verwende Großbuchstaben zur Darstellung der Ziffern 10 bis 35 anstelle von Kleinbuchstaben.

Der Typ „NumberFlags“ ist ein „typedef“ für „QFlags<NumberFlag>“. Er speichert eine OR-Kombination von „NumberFlag“-Werten.

Siehe auch „ setNumberFlags()“.

enum QTextStream::RealNumberNotation

Diese Enumeration legt fest, welche Notationen zur Darstellung von „ float “ und „ double “ als Zeichenfolgen verwendet werden sollen.

KonstanteWertBeschreibung
QTextStream::ScientificNotation2Wissenschaftliche Notation (Flag „ %e “ von „printf() “).
QTextStream::FixedNotation1Festkommadarstellung (Flag „ %f “ von „printf() “).
QTextStream::SmartNotation0Wissenschaftliche oder Festkommadarstellung, je nachdem, was am sinnvollsten ist (das Flag „ %g “ von `printf()`).

Siehe auch setRealNumberNotation().

enum QTextStream::Status

Diese Enumeration beschreibt den aktuellen Status des Textstroms.

KonstanteWertBeschreibung
QTextStream::Ok0Der Textstrom funktioniert normal.
QTextStream::ReadPastEnd1Der Textstrom hat über das Ende der Daten im zugrunde liegenden Gerät hinaus gelesen.
QTextStream::ReadCorruptData2Der Textstrom hat beschädigte Daten gelesen.
QTextStream::WriteFailed3Der Textstrom kann nicht auf das zugrunde liegende Gerät schreiben.

Siehe auch ` status()`.

Dokumentation der Member-Funktionen

QTextStream::QTextStream()

Erstellt einen QTextStream. Bevor Sie ihn zum Lesen oder Schreiben verwenden können, müssen Sie ihm ein Gerät oder eine Zeichenkette zuweisen.

Siehe auch „ setDevice()“ und „ setString()“.

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

Erstellt einen QTextStream, der mit „ device “ arbeitet.

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

Erstellt einen QTextStream, der auf „ fileHandle “ arbeitet, wobei „ openMode “ zur Definition des Öffnungsmodus verwendet wird. Intern wird ein „ QFile “ erstellt, um den FILE-Zeiger zu verarbeiten.

Dieser Konstruktor ist nützlich für die direkte Arbeit mit den gängigen FILE-basierten Ein- und Ausgabeströmen: stdin, stdout und stderr. Beispiel:

QString str;
QTextStream in(stdin);
in >> str;

[explicit] QTextStream::QTextStream(QByteArray *array, QIODeviceBase::OpenMode openMode = ReadWrite)

Erstellt einen `QTextStream`, der auf ` array` arbeitet, wobei der Öffnungsmodus über ` openMode ` definiert wird. Intern wird das Array von einem ` QBuffer` umschlossen.

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

Erstellt einen `QTextStream`, der auf ` string` arbeitet, wobei der Öffnungsmodus mithilfe von ` openMode ` definiert wird.

[explicit] QTextStream::QTextStream(const QByteArray &array, QIODeviceBase::OpenMode openMode = ReadOnly)

Erstellt einen QTextStream, der auf ` array` operiert, wobei der Öffnungsmodus über ` openMode ` definiert wird. Der Zugriff auf das Array erfolgt schreibgeschützt, unabhängig von den Werten in ` openMode`.

Dieser Konstruktor eignet sich besonders für die Arbeit mit konstanten Zeichenketten. Beispiel:

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

Löst den ` QTextStream` auf.

Wenn der Stream auf einem Gerät ausgeführt wird, wird „ flush()“ implizit aufgerufen. Andernfalls bleibt das Gerät unberührt.

bool QTextStream::atEnd() const

Gibt „ true “ zurück, wenn keine Daten mehr aus dem „ QTextStream “ gelesen werden können; andernfalls wird „ false “ zurückgegeben. Dies ähnelt dem Aufruf von „ QIODevice::atEnd()“, ist jedoch nicht identisch damit, da „ QTextStream “ auch seinen internen Unicode-Puffer berücksichtigt.

bool QTextStream::autoDetectUnicode() const

Gibt „ true “ zurück, wenn die automatische Unicode-Erkennung aktiviert ist, andernfalls „ false “. Die automatische Unicode-Erkennung ist standardmäßig aktiviert.

Siehe auch setAutoDetectUnicode() und setEncoding().

QIODevice *QTextStream::device() const

Gibt das aktuell mit dem QTextStream verknüpfte Gerät zurück oder nullptr, falls kein Gerät zugewiesen wurde.

Siehe auch setDevice() und string().

QStringConverter::Encoding QTextStream::encoding() const

Gibt die derzeit dem Stream zugewiesene Kodierung zurück.

Siehe auch setEncoding(), setAutoDetectUnicode() und locale().

QTextStream::FieldAlignment QTextStream::fieldAlignment() const

Gibt die aktuelle Feldausrichtung zurück.

Siehe auch setFieldAlignment() und fieldWidth().

int QTextStream::fieldWidth() const

Gibt die aktuelle Feldbreite zurück.

Siehe auch ` setFieldWidth()`.

void QTextStream::flush()

Gibt alle gepufferten Daten frei, die darauf warten, auf das Gerät geschrieben zu werden.

Wenn „ QTextStream “ auf eine Zeichenkette angewendet wird, führt diese Funktion keine Aktion aus.

bool QTextStream::generateByteOrderMark() const

Gibt „ true “ zurück, wenn „ QTextStream “ so eingestellt ist, dass bei Verwendung einer UTF-Kodierung das UTF-BOM (Byte Order Mark) generiert wird; andernfalls wird „ false “ zurückgegeben. Die Generierung des UTF-BOM ist standardmäßig auf „false“ gesetzt.

Siehe auch setGenerateByteOrderMark().

int QTextStream::integerBase() const

Gibt die aktuelle Basis der Ganzzahlen zurück. 0 bedeutet, dass die Basis beim Einlesen ermittelt wird, oder 10 (dezimal) bei der Generierung von Zahlen.

Siehe auch „ setIntegerBase()“, „ QString::number()“ und „ numberFlags()“.

QLocale QTextStream::locale() const

Gibt die Locale für diesen Stream zurück. Die Standard-Locale ist C.

Siehe auch ` setLocale()`.

QTextStream::NumberFlags QTextStream::numberFlags() const

Gibt die aktuellen Nummernkennzeichen zurück.

Siehe auch setNumberFlags(), integerBase() und realNumberNotation().

QChar QTextStream::padChar() const

Gibt das aktuelle Pad-Zeichen zurück.

Siehe auch setPadChar() und setFieldWidth().

qint64 QTextStream::pos() const

Gibt die Geräteposition zurück, die der aktuellen Position des Streams entspricht, oder -1, wenn ein Fehler auftritt (z. B. wenn kein Gerät oder keine Zeichenkette vorhanden ist oder wenn ein Gerätefehler vorliegt).

Da „ QTextStream “ gepuffert ist, muss diese Funktion möglicherweise das Gerät durchsuchen, um eine gültige Geräteposition zu ermitteln. Dieser Vorgang kann rechenintensiv sein, daher sollten Sie den Aufruf dieser Funktion in einer engen Schleife vermeiden.

Siehe auch ` seek()`.

QString QTextStream::read(qint64 maxlen)

Liest höchstens maxlen Zeichen aus dem Stream und gibt die gelesenen Daten als QString zurück.

Siehe auch „ readAll()“, „ readLine()“ und „ QIODevice::read()“.

QString QTextStream::readAll()

Liest den gesamten Inhalt des Streams ein und gibt ihn als ` QString` zurück. Vermeiden Sie diese Funktion bei der Arbeit mit großen Dateien, da sie erheblich viel Speicherplatz beansprucht.

Der Aufruf von ` readLine()` ist besser geeignet, wenn Sie nicht wissen, wie viele Daten verfügbar sind.

Siehe auch ` readLine()`.

QString QTextStream::readLine(qint64 maxlen = 0)

Liest eine Textzeile aus dem Stream und gibt sie als ` QString` zurück. Die maximal zulässige Zeilenlänge ist auf ` maxlen` festgelegt. Enthält der Stream Zeilen, die länger sind als dieser Wert, werden die Zeilen nach ` maxlen ` Zeichen aufgeteilt und in Teilen zurückgegeben.

Ist maxlen gleich 0, können die Zeilen beliebig lang sein.

Die zurückgegebene Zeile enthält keine abschließenden Zeilenendezeichen („\n “ oder „\r\n “), sodass der Aufruf von ` QString::trimmed()` möglicherweise nicht erforderlich ist.

Wenn der Stream bis zum Ende der Datei gelesen hat, gibt `readLine()` einen `null`-Wert für ` QString` zurück. Bei Zeichenketten oder bei Geräten, die dies unterstützen, können Sie mit ` atEnd()` explizit prüfen, ob das Ende des Streams erreicht wurde.

Siehe auch ` readAll()` und ` QIODevice::readLine()`.

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

Liest eine Textzeile aus dem Stream in „ line “ ein. Wenn „ line “ auf „ nullptr “ gesetzt ist, wird die eingelesene Zeile nicht gespeichert.

Die maximal zulässige Zeilenlänge ist auf ` maxlen` festgelegt. Enthält der Stream Zeilen, die länger sind als dieser Wert, werden die Zeilen nach ` maxlen ` Zeichen aufgeteilt und in Teilen zurückgegeben.

Ist maxlen gleich 0, können die Zeilen beliebig lang sein.

Die resultierende Zeile enthält keine abschließenden Zeilenendezeichen („\n “ oder „\r\n “), sodass der Aufruf von ` QString::trimmed()` unter Umständen nicht erforderlich ist.

Wenn „ line “ über ausreichende Kapazität für die zu lesenden Daten verfügt, muss diese Funktion möglicherweise keinen neuen Speicher zuweisen. Aus diesem Grund kann sie schneller sein als „ readLine()“.

Gibt „ false “ zurück, wenn der Stream bis zum Ende der Datei gelesen hat oder ein Fehler aufgetreten ist; andernfalls wird „ true “ zurückgegeben. Der Inhalt von „ line “ vor dem Aufruf wird in jedem Fall verworfen.

Siehe auch readAll(), QIODevice::readLine() und QIODevice::readLineInto().

QTextStream::RealNumberNotation QTextStream::realNumberNotation() const

Gibt die aktuelle Darstellung der reellen Zahl zurück.

Siehe auch setRealNumberNotation(), realNumberPrecision(), numberFlags() und integerBase().

int QTextStream::realNumberPrecision() const

Gibt die aktuelle Genauigkeit für reelle Zahlen zurück, d. h. die Anzahl der Dezimalstellen, die „ QTextStream “ bei der Generierung reeller Zahlen ausgibt (FixedNotation, ScientificNotation), oder die maximale Anzahl der signifikanten Ziffern (SmartNotation).

Siehe auch setRealNumberPrecision(), setRealNumberNotation(), realNumberNotation(), numberFlags() und integerBase().

void QTextStream::reset()

Setzt die Formatierungsoptionen von ` QTextStream` zurück und versetzt die Variable in ihren ursprünglichen Zustand. Das Gerät, die Zeichenkette und alle gepufferten Daten bleiben davon unberührt.

void QTextStream::resetStatus()

Setzt den Status des Textstroms zurück.

Siehe auch „ QTextStream::Status“ , „ status()“ und „ setStatus()“.

bool QTextStream::seek(qint64 pos)

Sucht die Position „ pos “ im Gerät. Gibt bei Erfolg „ true “ zurück; andernfalls wird „ false “ zurückgegeben.

void QTextStream::setAutoDetectUnicode(bool enabled)

Wenn „ enabled “ auf „true“ gesetzt ist, versucht „ QTextStream “, die Unicode-Kodierung zu erkennen, indem es einen Blick in die Stream-Daten wirft, um zu prüfen, ob es die Byte Order Mark (BOM) für UTF-8, UTF-16 oder UTF-32 findet. Wird diese Markierung gefunden, ersetzt „ QTextStream “ die aktuelle Kodierung durch die UTF-Kodierung.

Diese Funktion kann zusammen mit setEncoding() verwendet werden. Es ist üblich, die Kodierung auf UTF-8 festzulegen und anschließend die UTF-16-Erkennung zu aktivieren.

Siehe auch „ autoDetectUnicode()“ und „ setEncoding()“.

void QTextStream::setDevice(QIODevice *device)

Setzt das aktuelle Gerät auf „ device “. Wenn bereits ein Gerät zugewiesen wurde, ruft „ QTextStream “ die Funktion „ flush()“ auf, bevor das alte Gerät ersetzt wird.

Hinweis: Diese Funktion setzt die Locale auf die Standard-Locale („C“) und die Kodierung auf die Standardkodierung UTF-8 zurück.

Siehe auch device() und setString().

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

Legt die Kodierung für diesen Stream auf „ encoding “ fest. Die Kodierung wird zum Dekodieren aller Daten verwendet, die vom zugewiesenen Gerät gelesen werden, sowie zum Kodieren aller Daten, die geschrieben werden. Standardmäßig wird „ QStringConverter::Utf8 “ verwendet, und die automatische Unicode-Erkennung ist aktiviert.

Wenn „ QTextStream “ auf eine Zeichenkette angewendet wird, führt diese Funktion keine Aktion aus.

Warnung: Wenn Sie diese Funktion aufrufen, während der Textstrom aus einem geöffneten sequenziellen Socket liest, enthält der interne Puffer möglicherweise noch Text, der mit der alten Kodierung dekodiert wurde.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch ` encoding()`, ` setAutoDetectUnicode()` und ` setLocale()`.

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

Legt die Feldausrichtung auf „ mode “ fest. In Verbindung mit „ setFieldWidth()“ ermöglicht diese Funktion die Erstellung einer formatierten Ausgabe, bei der der Text linksbündig, rechtsbündig oder zentriert ausgerichtet ist.

Siehe auch „ fieldAlignment “ () und „ setFieldWidth “ ().

void QTextStream::setFieldWidth(int width)

Setzt die aktuelle Feldbreite auf ` width`. Ist ` width ` gleich 0 (Standardwert), entspricht die Feldbreite der Länge des generierten Textes.

Hinweis: Die Feldbreite gilt für jedes Element, das nach dem Aufruf dieser Funktion an diesen Stream angehängt wird (z. B. wird auch `endl` aufgefüllt). Dieses Verhalten unterscheidet sich von ähnlichen Klassen in der STL, bei denen die Feldbreite nur für das nächste Element gilt.

Siehe auch „ fieldWidth()“ und „ setPadChar()“.

void QTextStream::setGenerateByteOrderMark(bool generate)

Wenn „ generate “ wahr ist und eine UTF-Kodierung verwendet wird, fügt „ QTextStream “ das BOM (Byte Order Mark) ein, bevor Daten auf das Gerät geschrieben werden. Ist „ generate “ falsch, wird kein BOM eingefügt. Diese Funktion muss aufgerufen werden, bevor Daten geschrieben werden. Andernfalls hat sie keine Auswirkung.

Siehe auch generateByteOrderMark() und bom().

void QTextStream::setIntegerBase(int base)

Legt die Basis für Ganzzahlen auf „ base “ fest, sowohl für das Lesen als auch für die Generierung von Zahlen. „ base “ kann entweder 2 (binär), 8 (oktal), 10 (dezimal) oder 16 (hexadezimal) sein. Ist „ base “ gleich 0, versucht „ QTextStream “, die Basis durch Überprüfung der Daten im Datenstrom zu ermitteln. Bei der Generierung von Zahlen geht „ QTextStream “ von der Basis 10 aus, sofern die Basis nicht explizit festgelegt wurde.

Siehe auch integerBase(), QString::number() und setNumberFlags().

void QTextStream::setLocale(const QLocale &locale)

Legt die Locale für diesen Stream auf „ locale “ fest. Die angegebene Locale wird für die Umwandlung zwischen Zahlen und deren Zeichenfolgendarstellungen verwendet.

Die Standard-Locale ist C und stellt einen Sonderfall dar – aus Gründen der Abwärtskompatibilität wird das Tausendertrennzeichen nicht verwendet.

Siehe auch „ locale()“.

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

Setzt die aktuellen Zahlenflags auf „ flags “. „ flags “ ist eine Gruppe von Flags aus der Enumeration „ NumberFlag “ und beschreibt Optionen zur Formatierung des generierten Codes (z. B. ob die Basis oder das Vorzeichen einer Zahl immer angegeben werden soll oder nicht).

Siehe auch ` numberFlags()`, ` setIntegerBase()` und ` setRealNumberNotation()`.

void QTextStream::setPadChar(QChar ch)

Setzt das Füllzeichen auf „ ch “. Der Standardwert ist das ASCII-Leerzeichen („ “) bzw. „ QChar “ (0x20). Dieses Zeichen wird verwendet, um bei der Textgenerierung Lücken in Feldern aufzufüllen.

Beispiel:

QString s;
QTextStream out(&s);
out.setFieldWidth(10);
out.setFieldAlignment(QTextStream::AlignCenter);
out.setPadChar('-');
out << "Qt" << "rocks!";

Die Zeichenkette „ s “ enthält:

----Qt------rocks!--

Siehe auch padChar() und setFieldWidth().

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

Legt die Darstellung von reellen Zahlen auf „ notation “ fest (SmartNotation, FixedNotation, ScientificNotation). Beim Einlesen und Generieren von Zahlen verwendet „ QTextStream “ diesen Wert, um die Formatierung von reellen Zahlen zu erkennen.

Siehe auch realNumberNotation(), setRealNumberPrecision(), setNumberFlags() und setIntegerBase().

void QTextStream::setRealNumberPrecision(int precision)

Legt die Genauigkeit von reellen Zahlen auf „ precision “ fest. Dieser Wert beschreibt die Anzahl der Dezimalstellen, die „ QTextStream “ bei der Generierung von reellen Zahlen ausgeben soll (FixedNotation, ScientificNotation), bzw. die maximale Anzahl der signifikanten Ziffern (SmartNotation).

Die Genauigkeit darf kein negativer Wert sein. Der Standardwert ist 6.

Siehe auch realNumberPrecision() und setRealNumberNotation().

void QTextStream::setStatus(QTextStream::Status status)

Setzt den Status des Textstroms auf den angegebenen Wert „ status “.

Nachfolgende Aufrufe von `setStatus()` werden ignoriert, bis ` resetStatus()` aufgerufen wird.

Siehe auch „ Status“ , „ status()“ und „ resetStatus()“.

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

Setzt die aktuelle Zeichenkette auf „ string “, wobei die angegebene „ openMode “ verwendet wird. Wenn bereits ein Gerät zugewiesen wurde, ruft „ QTextStream “ vor dem Ersetzen die Funktion „ flush()“ auf.

Siehe auch „ string()“ und „ setDevice()“.

void QTextStream::skipWhiteSpace()

Liest Leerzeichen aus dem Stream und verwirft sie, bis entweder ein Nicht-Leerzeichen erkannt wird oder bis atEnd() den Wert „true“ zurückgibt. Diese Funktion ist nützlich, wenn ein Stream Zeichen für Zeichen gelesen wird.

Leerzeichen sind alle Zeichen, für die QChar::isSpace() den Wert „ true “ zurückgibt.

Siehe auch ` operator>>()`.

QTextStream::Status QTextStream::status() const

Gibt den Status des Textstroms zurück.

Siehe auch „ QTextStream::Status“ , „ setStatus()“ und „ resetStatus()“.

QString *QTextStream::string() const

Gibt die aktuell dem ` QTextStream` zugewiesene Zeichenkette zurück oder ` nullptr `, falls keine Zeichenkette zugewiesen wurde.

Siehe auch „ setString()“ und „ device()“.

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

Gibt zurück, ob dieser Stream fehlerfrei ist (status() gibt „ Ok “ zurück).

Diese Funktion wurde in Qt 6.10 eingeführt.

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

Schreibt das Zeichen „ c “ in den Stream und gibt anschließend eine Referenz auf „ QTextStream “ zurück.

Siehe auch setFieldWidth().

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

Schreibt die Zeichenkette „ string “ in den Stream und gibt eine Referenz auf „ QTextStream “ zurück. Die Zeichenkette wird zunächst mit der zugewiesenen Kodierung (Standard ist UTF-8) kodiert, bevor sie in den Stream geschrieben wird.

Siehe auch setFieldWidth() und setEncoding().

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

Schreibt die reelle Zahl f in den Stream und gibt anschließend eine Referenz auf QTextStream zurück. Standardmäßig speichert QTextStream die Zahl unter Verwendung von SmartNotation mit einer Genauigkeit von bis zu 6 Stellen. Sie können die textuelle Darstellung, die QTextStream für reelle Zahlen verwendet, ändern, indem Sie setRealNumberNotation(), setRealNumberPrecision() und setNumberFlags() aufrufen.

Siehe auch setFieldWidth(), setRealNumberNotation(), setRealNumberPrecision() und setNumberFlags().

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

Schreibt die Ganzzahl i in den Stream und gibt anschließend einen Verweis auf QTextStream zurück. Standardmäßig wird die Zahl in dezimaler Form gespeichert, Sie können die Basis jedoch auch festlegen, indem Sie setIntegerBase() aufrufen.

Siehe auch setFieldWidth() und setNumberFlags().

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

Schreibt „ string “ in den Stream und gibt eine Referenz auf den „ QTextStream “ zurück.

Dies ist eine überladene Funktion.

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

Schreibt „ string “ in den Stream und gibt eine Referenz auf den „ QTextStream “ zurück.

Dies ist eine überladene Funktion.

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

Konvertiert „ c “ von ASCII in „ QChar “ und schreibt es anschließend in den Stream.

Dies ist eine überladene Funktion.

[since 6.3.1] QTextStream &QTextStream::operator<<(char16_t c)

Schreibt das Unicode-Zeichen „ c “ in den Stream und gibt anschließend eine Referenz auf „ QTextStream “ zurück.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.3.1 eingeführt.

QTextStream &QTextStream::operator<<(const QByteArray &array)

Schreibt „ array “ in den Stream. Der Inhalt von „ array “ wird mit „ QString::fromUtf8()“ konvertiert.

Dies ist eine überladene Funktion.

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

Schreibt die konstante Zeichenkette, auf die string verweist, in den Stream. Es wird davon ausgegangen, dass string in UTF-8-Kodierung vorliegt. Dieser Operator ist praktisch bei der Arbeit mit konstanten Zeichenkettendaten. Beispiel:

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

Warnung: QTextStream geht davon aus, dass string auf eine Textzeichenfolge verweist, die mit einem „'\0 “-Zeichen endet. Fehlt das abschließende „'\0 “-Zeichen, kann Ihre Anwendung abstürzen.

Dies ist eine überladene Funktion.

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

Schreibt „ ptr “ als Hexadezimalzahl mit einer Basis in den Stream.

Dies ist eine überladene Funktion.

QTextStream &QTextStream::operator<<(double f)

Schreibt das Doppel f in den Stream.

Dies ist eine überladene Funktion.

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

Schreibt den vorzeichenbehafteten Integer- i in den Stream.

Dies ist eine überladene Funktion.

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

Schreibt den vorzeichenbehafteten Long-Wert „ i “ in den Stream.

Dies ist eine überladene Funktion.

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

Schreibt den qlonglong- i -Wert in den Stream.

Dies ist eine überladene Funktion.

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

Schreibt den „qulonglong“- i n in den Stream.

Dies ist eine überladene Funktion.

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

Schreibt den Wert „ i “ vom Typ „unsigned int“ in den Stream.

Dies ist eine überladene Funktion.

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

Schreibt den Wert „ i “ vom Typ „unsigned long“ in den Stream.

Dies ist eine überladene Funktion.

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

Schreibt den Wert „ i “ vom Typ „unsigned short“ in den Stream.

Dies ist eine überladene Funktion.

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

Liest ein Zeichen aus dem Stream und speichert es in ` c`. Gibt eine Referenz auf ` QTextStream` zurück, sodass mehrere Operatoren verschachtelt werden können. Beispiel:

QTextStream in(file);
QChar ch1, ch2, ch3;
in >> ch1 >> ch2 >> ch3;

Leerzeichen werden nicht übersprungen.

QTextStream &QTextStream::operator>>(QString &str)

Liest ein Wort aus dem Stream und speichert es in „ str “, anschließend wird eine Referenz auf den Stream zurückgegeben. Wörter werden durch Leerzeichen getrennt (d. h. alle Zeichen, für die „ QChar::isSpace()“ den Wert „ true “ zurückgibt).

Führende Leerzeichen werden übersprungen.

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

Liest eine reelle Zahl aus dem Stream und speichert sie in ` f`, anschließend wird eine Referenz auf ` QTextStream` zurückgegeben. Die Zahl wird in den richtigen Typ umgewandelt. Wird im Stream keine reelle Zahl erkannt, wird ` f ` auf 0,0 gesetzt.

Als besondere Ausnahme erlaubt „ QTextStream “, dass die Zeichenfolgen „nan“ und „inf“ die Float- oder Double-Werte NAN und INF darstellen.

Führende Leerzeichen werden übersprungen.

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

Liest eine Ganzzahl aus dem Stream und speichert sie in „ i “, anschließend wird eine Referenz auf „ QTextStream “ zurückgegeben. Die Zahl wird vor dem Speichern in den richtigen Typ umgewandelt. Wenn im Stream keine Zahl erkannt wurde, wird „ i “ auf 0 gesetzt.

Standardmäßig versucht ` QTextStream `, die Basis der Zahl anhand der folgenden Regeln zu ermitteln:

PräfixBasis
„0b“ oder „0B“2 (binär)
„0“ gefolgt von „0–7“8 (oktal)
ansonsten „0“10 (dezimal)
„0x“ oder „0X“16 (hexadezimal)
„1“ bis „9“10 (dezimal)

Durch den Aufruf von ` setIntegerBase()` können Sie die Zahlensystembasis explizit festlegen. Dadurch wird die automatische Erkennung deaktiviert und die Ausführung von ` QTextStream ` leicht beschleunigt.

Führende Leerzeichen werden übersprungen.

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

Konvertiert das Wort in UTF-8 und speichert es anschließend in „ array “.

Dies ist eine überladene Funktion.

Siehe auch ` QString::toLatin1()`.

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

Liest ein Zeichen aus dem Stream und speichert es in ` c`. Das Zeichen aus dem Stream wird vor dem Speichern in ISO-8859-1 konvertiert.

Dies ist eine überladene Funktion.

Siehe auch ` QChar::toLatin1()`.

[since 6.4] QTextStream &QTextStream::operator>>(char16_t &c)

Liest ein Zeichen aus dem Stream und speichert es in „ c “.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.4 eingeführt.

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

Speichert die reelle Zahl im Double- f.

Dies ist eine überladene Funktion.

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

Speichert die Ganzzahl in der „signed int“- i.

Dies ist eine überladene Funktion.

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

Speichert die Ganzzahl im vorzeichenbehafteten Long- i.

Dies ist eine überladene Funktion.

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

Speichert die Ganzzahl im qlonglong- i.

Dies ist eine überladene Funktion.

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

Speichert die Ganzzahl im qulonglong- i.

Dies ist eine überladene Funktion.

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

Speichert die Ganzzahl im „unsigned int“- i.

Dies ist eine überladene Funktion.

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

Speichert die Ganzzahl im „unsigned long“- i.

Dies ist eine überladene Funktion.

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

Speichert die Ganzzahl im „unsigned short“- i.

Dies ist eine überladene Funktion.

Verwandte Nicht-Mitglieder

QTextStreamManipulator qSetFieldWidth(int width)

Entspricht „ QTextStream::setFieldWidth “ (width).

QTextStreamManipulator qSetPadChar(QChar ch)

Entspricht „ QTextStream::setPadChar “ (ch).

QTextStreamManipulator qSetRealNumberPrecision(int precision)

Entspricht „ 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.