QTextStream Class
Die Klasse QTextStream bietet eine praktische Schnittstelle zum Lesen und Schreiben von Text. Mehr...
Kopfzeile: | #include <QTextStream> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Erbt: | QIODeviceBase |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QTextStream ist Teil von Input/Output und Networking and Classes for String Data.
Hinweis: Alle Funktionen in 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) |
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 |
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) |
Verwandte Nicht-Mitglieder
QTextStreamManipulator | qSetFieldWidth(int width) |
QTextStreamManipulator | qSetPadChar(QChar ch) |
QTextStreamManipulator | qSetRealNumberPrecision(int precision) |
Detaillierte Beschreibung
QTextStream kann auf einem QIODevice, einem QByteArray oder einem QString arbeiten. Mit den Streaming-Operatoren von QTextStream können Sie bequem Wörter, Zeilen und Zahlen lesen und schreiben. Für die Generierung von Text unterstützt QTextStream Formatierungsoptionen für 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) << left << 3.14 << 2.7; // writes "Result: 3.14 2.7 " }
Es ist auch üblich, QTextStream zu verwenden, um Konsoleneingaben zu lesen und Konsolenausgaben zu schreiben. QTextStream ist ortsabhängig und dekodiert Standardeingaben automatisch in der richtigen Kodierung. Beispiel:
QTextStream stream(stdin); QString line; while (stream.readLineInto(&line)) { ... }
Neben der Verwendung der Konstruktoren von QTextStream können Sie auch das Gerät oder die Zeichenkette festlegen, auf der QTextStream arbeitet, indem Sie setDevice() oder setString() aufrufen. Sie können eine Position suchen, indem Sie seek() aufrufen, und atEnd() gibt true zurück, wenn es keine Daten mehr zu lesen gibt. Wenn Sie flush() aufrufen, leert QTextStream alle Daten aus seinem Schreibpuffer in das Gerät und ruft flush() auf dem Gerät auf.
Intern verwendet QTextStream einen Unicode-basierten Puffer, und QStringConverter wird von QTextStream verwendet, um automatisch verschiedene Kodierungen zu unterstützen. Standardmäßig wird UTF-8 zum Lesen und Schreiben verwendet, aber Sie können die Kodierung auch durch den Aufruf von setEncoding() einstellen. Die automatische Unicode-Erkennung wird ebenfalls unterstützt. Wenn diese Funktion aktiviert ist (das Standardverhalten), erkennt QTextStream das UTF-8, UTF-16 oder das UTF-32 BOM (Byte Order Mark) und wechselt beim Lesen zur entsprechenden UTF-Kodierung. QTextStream schreibt standardmäßig kein BOM, aber Sie können dies durch den Aufruf von setGenerateByteOrderMark(true) aktivieren. Wenn QTextStream direkt auf einer QString arbeitet, ist die Kodierung deaktiviert.
Es gibt drei allgemeine Möglichkeiten, QTextStream beim Lesen von Textdateien zu verwenden:
- Stück für Stück, durch Aufruf von readLine() oder readAll().
- Wort für Wort. QTextStream unterstützt Streaming in QStrings, QByteArrays 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 oft für eine bequeme 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 aus dem Strom lesen, indem Sie die Implementierung einer Oberklasse verwenden. Wenn Sie z. B. eine QFile haben und daraus direkt mit QFile::readLine() lesen, anstatt den Stream zu verwenden, wird die interne Position des Textstreams nicht mit der Position der Datei übereinstimmen.
Standardmäßig erkennt QTextStream beim Lesen von Zahlen aus einem Textstrom automatisch die Basisdarstellung der Zahl. Wenn die Zahl zum Beispiel mit "0x" beginnt, wird angenommen, dass sie in hexadezimaler Form vorliegt. Beginnt die Zahl mit den Ziffern 1-9, wird angenommen, dass sie in dezimaler Form vorliegt, und so weiter. Sie können die Integer-Basis einstellen und damit die automatische Erkennung deaktivieren, indem Sie setIntegerBase() aufrufen. Beispiel:
QTextStream in("0x50 0x20"); int firstNumber, secondNumber; in >> firstNumber; // firstNumber == 80 in >> dec >> secondNumber; // secondNumber == 0 char ch; in >> ch; // ch == 'x'
QTextStream unterstützt viele Formatierungsoptionen zur Erzeugung von Text. Sie können die Feldbreite und das Auffüllzeichen durch die Aufrufe setFieldWidth() und setPadChar() einstellen. 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 erzeugten Zahl einzustellen. Einige zusätzliche Optionen zur Zahlenformatierung sind auch über setNumberFlags() verfügbar.
Wie <iostream>
in der Standard-C++-Bibliothek definiert auch QTextStream mehrere globale Manipulatorfunktionen:
Darüber hinaus bietet Qt drei globale Manipulatoren, die einen Parameter benötigen: qSetFieldWidth(), qSetPadChar() und qSetRealNumberPrecision().
Siehe auch QDataStream, QIODevice, QFile, QBuffer, und QTcpSocket.
Dokumentation der Mitgliedstypen
enum QTextStream::FieldAlignment
Diese Aufzählung gibt an, wie Text in Feldern ausgerichtet werden soll, wenn das Feld breiter ist als der Text, der es belegt.
Konstante | Wert | Beschreibung |
---|---|---|
QTextStream::AlignLeft | 0 | An der rechten Seite von Feldern ausrichten. |
QTextStream::AlignRight | 1 | An der linken Seite von Feldern auffüllen. |
QTextStream::AlignCenter | 2 | Auffüllen auf beiden Seiten eines Feldes. |
QTextStream::AlignAccountingStyle | 3 | Dasselbe wie AlignRight, außer dass das Vorzeichen einer Zahl linksbündig ist. |
Siehe auch setFieldAlignment().
enum QTextStream::NumberFlag
flags QTextStream::NumberFlags
Diese Aufzählung spezifiziert verschiedene Flags, die gesetzt werden können, um die Ausgabe von Ganzzahlen, float
und double
zu beeinflussen.
Konstante | Wert | Beschreibung |
---|---|---|
QTextStream::ShowBase | 0x1 | Zeigt die Basis als Präfix an, wenn die Basis 16 ("0x"), 8 ("0") oder 2 ("0b") ist. |
QTextStream::ForcePoint | 0x2 | Bei Zahlen wird immer das Dezimaltrennzeichen angegeben, auch wenn es keine Dezimalstellen gibt. |
QTextStream::ForceSign | 0x4 | Setzen Sie das Vorzeichen immer in Zahlen ein, auch bei positiven Zahlen. |
QTextStream::UppercaseBase | 0x8 | Verwenden Sie Großbuchstaben für Basispräfixe ("0X", "0B"). |
QTextStream::UppercaseDigits | 0x10 | Verwenden Sie 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 ODER-Kombination von NumberFlag-Werten.
Siehe auch setNumberFlags().
enum QTextStream::RealNumberNotation
Diese Aufzählung gibt an, welche Notationen für die Darstellung von float
und double
als Zeichenketten zu verwenden sind.
Konstante | Wert | Beschreibung |
---|---|---|
QTextStream::ScientificNotation | 2 | Wissenschaftliche Notation (printf() 's %e flag). |
QTextStream::FixedNotation | 1 | Festkomma-Notation (printf() 's %f flag). |
QTextStream::SmartNotation | 0 | Wissenschaftliche oder Festkomma-Notation, je nachdem, was am sinnvollsten ist (printf() 's %g flag). |
Siehe auch setRealNumberNotation().
enum QTextStream::Status
Diese Aufzählung beschreibt den aktuellen Status des Textstroms.
Konstante | Wert | Beschreibung |
---|---|---|
QTextStream::Ok | 0 | Der Text-Stream arbeitet normal. |
QTextStream::ReadPastEnd | 1 | Der Textstrom hat das Ende der Daten im zugrunde liegenden Gerät überlesen. |
QTextStream::ReadCorruptData | 2 | Der Textstrom hat fehlerhafte Daten gelesen. |
QTextStream::WriteFailed | 3 | Der Text-Stream kann nicht in das zugrunde liegende Gerät schreiben. |
Siehe auch status().
Dokumentation der Mitgliedsfunktionen
QTextStream::QTextStream()
Konstruiert einen QTextStream. Bevor Sie ihn zum Lesen oder Schreiben verwenden können, müssen Sie ein Gerät oder einen String zuweisen.
Siehe auch setDevice() und setString().
[explicit]
QTextStream::QTextStream(QIODevice *device)
Konstruiert einen QTextStream, der mit device arbeitet.
[explicit]
QTextStream::QTextStream(FILE *fileHandle, QIODeviceBase::OpenMode openMode = ReadWrite)
Konstruiert einen QTextStream, der auf fileHandle arbeitet und openMode verwendet, um den Öffnungsmodus zu definieren. Intern wird eine QFile erstellt, um den FILE-Zeiger zu verwalten.
Dieser Konstruktor ist nützlich, um direkt mit den üblichen FILE-basierten Ein- und Ausgabeströmen zu arbeiten: stdin, stdout und stderr. Beispiel:
QString str; QTextStream in(stdin); in >> str;
[explicit]
QTextStream::QTextStream(QByteArray *array, QIODeviceBase::OpenMode openMode = ReadWrite)
Konstruiert einen QTextStream, der mit array arbeitet und openMode verwendet, um den Öffnungsmodus zu definieren. Intern wird das Array von einem QBuffer umhüllt.
[explicit]
QTextStream::QTextStream(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)
Konstruiert einen QTextStream, der mit string arbeitet und openMode verwendet, um den Öffnungsmodus zu definieren.
[explicit]
QTextStream::QTextStream(const QByteArray &array, QIODeviceBase::OpenMode openMode = ReadOnly)
Konstruiert einen QTextStream, der auf array arbeitet und openMode verwendet, um den Öffnungsmodus zu definieren. Auf das Array wird schreibgeschützt zugegriffen, unabhängig von den Werten in openMode.
Dieser Konstruktor ist praktisch für die Arbeit mit konstanten Strings. 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()
Zerstört den QTextStream.
Wenn der Stream auf einem Gerät arbeitet, wird flush() implizit aufgerufen. Andernfalls wird das Gerät nicht berührt.
bool QTextStream::atEnd() const
Gibt true
zurück, wenn keine weiteren Daten aus QTextStream zu lesen sind; andernfalls false
. Dies ist ähnlich, aber nicht dasselbe wie der Aufruf von QIODevice::atEnd(), da QTextStream auch den internen Unicode-Puffer berücksichtigt.
bool QTextStream::autoDetectUnicode() const
Gibt true
zurück, wenn die automatische Unicode-Erkennung aktiviert ist, andernfalls wird false
zurückgegeben. Die automatische Unicode-Erkennung ist standardmäßig aktiviert.
Siehe auch setAutoDetectUnicode() und setEncoding().
QIODevice *QTextStream::device() const
Gibt das aktuelle Gerät zurück, das dem QTextStream zugeordnet ist, oder nullptr
, wenn kein Gerät zugewiesen wurde.
Siehe auch setDevice() und string().
QStringConverter::Encoding QTextStream::encoding() const
Gibt die Codierung zurück, die dem Stream aktuell zugewiesen ist.
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()
Leert alle gepufferten Daten, die darauf warten, in das Gerät geschrieben zu werden.
Wenn QTextStream mit einer Zeichenkette arbeitet, bewirkt diese Funktion nichts.
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) erzeugt wird; andernfalls wird false
zurückgegeben. Die UTF-BOM-Erzeugung ist standardmäßig auf false gesetzt.
Siehe auch setGenerateByteOrderMark().
int QTextStream::integerBase() const
Gibt die aktuelle Basis von Ganzzahlen zurück. 0 bedeutet, dass die Basis beim Lesen erkannt wird, oder 10 (dezimal) beim Erzeugen von Zahlen.
Siehe auch setIntegerBase(), QString::number(), und numberFlags().
QLocale QTextStream::locale() const
Gibt das Gebietsschema für diesen Stream zurück. Das Standardgebietsschema ist C.
Siehe auch setLocale().
QTextStream::NumberFlags QTextStream::numberFlags() const
Gibt die aktuellen Nummernflags zurück.
Siehe auch setNumberFlags(), integerBase(), und realNumberNotation().
QChar QTextStream::padChar() const
Gibt das aktuelle Auffüllzeichen 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 es kein Gerät oder keine Zeichenkette gibt oder wenn ein Gerätefehler vorliegt).
Da QTextStream gepuffert ist, muss diese Funktion möglicherweise das Gerät suchen, um eine gültige Geräteposition zu rekonstruieren. Dieser Vorgang kann teuer sein, daher sollten Sie es vermeiden, diese Funktion in einer engen Schleife aufzurufen.
Siehe auch seek().
QString QTextStream::read(qint64 maxlen)
Liest maximal 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 und gibt ihn als QString zurück. Vermeiden Sie diese Funktion, wenn Sie mit großen Dateien arbeiten, da sie eine erhebliche Menge an Speicher verbraucht.
Der Aufruf von readLine() ist besser, 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 wird auf maxlen gesetzt. Enthält der Stream längere Zeilen, werden diese nach maxlen Zeichen aufgeteilt und in Teilen zurückgegeben.
Wenn maxlen gleich 0 ist, können die Zeilen beliebig lang sein.
Die zurückgegebene Zeile hat keine abschließenden Zeilenende-Zeichen ("\n" oder "\r\n"), so dass der Aufruf von QString::trimmed() unnötig sein kann.
Wenn der Stream bis zum Ende der Datei gelesen hat, gibt readLine() eine Null zurück QString. Bei Zeichenketten oder bei Geräten, die dies unterstützen, können Sie mit atEnd() explizit auf das Ende des Streams testen.
Siehe auch readAll() und QIODevice::readLine().
bool QTextStream::readLineInto(QString *line, qint64 maxlen = 0)
Liest eine Textzeile aus dem Stream in line. Wenn line gleich nullptr
ist, wird die gelesene Zeile nicht gespeichert.
Die maximal zulässige Zeilenlänge ist auf maxlen festgelegt. Enthält der Datenstrom Zeilen, die länger sind als diese, werden die Zeilen nach maxlen aufgeteilt und in Teilen zurückgegeben.
Wenn maxlen gleich 0 ist, können die Zeilen beliebig lang sein.
Die resultierende Zeile hat keine nachgestellten Zeilenendezeichen ("\n" oder "\r\n"), so dass der Aufruf von QString::trimmed() unnötig sein kann.
Wenn line über ausreichend 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 gibt sie true
zurück. Der Inhalt von line vor dem Aufruf wird in jedem Fall verworfen.
Siehe auch readAll() und QIODevice::readLine().
QTextStream::RealNumberNotation QTextStream::realNumberNotation() const
Gibt die aktuelle reelle Zahlendarstellung zurück.
Siehe auch setRealNumberNotation(), realNumberPrecision(), numberFlags(), und integerBase().
int QTextStream::realNumberPrecision() const
Liefert die aktuelle Genauigkeit der reellen Zahlen oder die Anzahl der Nachkommastellen, die QTextStream bei der Generierung reeller Zahlen (FixedNotation, ScientificNotation) schreibt, oder die maximale Anzahl signifikanter Stellen (SmartNotation).
Siehe auch setRealNumberPrecision(), setRealNumberNotation(), realNumberNotation(), numberFlags(), und integerBase().
void QTextStream::reset()
Setzt die Formatierungsoptionen von QTextStream zurück und bringt es in seinen ursprünglichen Konstruktionszustand. Das Gerät, die Zeichenkette und alle gepufferten Daten bleiben 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 nach der Position pos im Gerät. Gibt bei Erfolg true
zurück, andernfalls false
.
void QTextStream::setAutoDetectUnicode(bool enabled)
Wenn enabled wahr ist, versucht QTextStream, die Unicode-Kodierung zu erkennen, indem es in den Daten des Datenstroms nach dem UTF-8, UTF-16 oder UTF-32 Byte Order Mark (BOM) sucht. Wenn diese Markierung gefunden wird, 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 zu setzen und dann 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 flush () auf, bevor das alte Gerät ersetzt wird.
Hinweis: Diese Funktion setzt das Gebietsschema auf das Standardgebietsschema ('C') und die Kodierung auf die Standardkodierung, UTF-8, zurück.
Siehe auch device() und setString().
void QTextStream::setEncoding(QStringConverter::Encoding encoding)
Legt die Kodierung für diesen Stream auf encoding fest. Die Kodierung wird für die Dekodierung aller Daten verwendet, die von dem zugewiesenen Gerät gelesen werden, und für die Kodierung aller Daten, die geschrieben werden. Standardmäßig wird QStringConverter::Utf8 verwendet, und die automatische Unicode-Erkennung ist aktiviert.
Wenn QTextStream mit einer Zeichenkette arbeitet, bewirkt diese Funktion nichts.
Warnung: Wenn Sie diese Funktion aufrufen, während der Textstrom von einem offenen sequenziellen Socket gelesen wird, kann der interne Puffer noch Text enthalten, der mit der alten Kodierung dekodiert wurde.
Siehe auch encoding(), setAutoDetectUnicode(), und setLocale().
void QTextStream::setFieldAlignment(QTextStream::FieldAlignment mode)
Setzt die Feldausrichtung auf mode. In Verbindung mit setFieldWidth() können Sie mit dieser Funktion formatierte Ausgaben mit links-, rechts- oder mittig ausgerichtetem Text erzeugen.
Siehe auch fieldAlignment() und setFieldWidth().
void QTextStream::setFieldWidth(int width)
Setzt die aktuelle Feldbreite auf width. Ist width gleich 0 (Standard), entspricht die Feldbreite der Länge des erzeugten Textes.
Hinweis: Die Feldbreite gilt für jedes Element, das an diesen Stream angehängt wird, nachdem diese Funktion aufgerufen wurde (z. B. wird auch endl aufgefüllt). Dieses Verhalten unterscheidet sich von ähnlichen Klassen in der STL, wo 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 irgendwelche Daten in das Gerät geschrieben wurden. Wenn generate falsch ist, wird kein BOM eingefügt. Diese Funktion muss aufgerufen werden, bevor irgendwelche Daten geschrieben werden. Andernfalls führt sie nichts aus.
Siehe auch generateByteOrderMark() und bom().
void QTextStream::setIntegerBase(int base)
Legt die Basis von Ganzzahlen auf base fest, sowohl zum Lesen als auch zum Erzeugen von Zahlen. base kann entweder 2 (binär), 8 (oktal), 10 (dezimal) oder 16 (hexadezimal) sein. Wenn base gleich 0 ist, versucht QTextStream, die Basis zu ermitteln, indem es die Daten im Datenstrom untersucht. Bei der Generierung von Zahlen nimmt QTextStream an, dass die Basis 10 ist, es sei denn, die Basis wurde explizit festgelegt.
Siehe auch integerBase(), QString::number(), und setNumberFlags().
void QTextStream::setLocale(const QLocale &locale)
Legt das Gebietsschema für diesen Stream auf locale fest. Das angegebene Gebietsschema wird für Konvertierungen zwischen Zahlen und ihren Zeichenkettendarstellungen verwendet.
Das Standardgebietsschema ist C und ist ein Sonderfall - das Tausendertrennzeichen wird aus Gründen der Abwärtskompatibilität nicht verwendet.
Siehe auch locale().
void QTextStream::setNumberFlags(QTextStream::NumberFlags flags)
Setzt die aktuellen Zahlenflags auf flags. flags ist ein Satz von Flags aus der Aufzählung NumberFlag und beschreibt Optionen für die Formatierung des erzeugten Codes (z.B. ob immer die Basis oder das Vorzeichen einer Zahl geschrieben werden soll oder nicht).
Siehe auch numberFlags(), setIntegerBase(), und setRealNumberNotation().
void QTextStream::setPadChar(QChar ch)
Setzt das Auffüllzeichen auf ch. Der Standardwert ist das ASCII-Leerzeichen (' ') oder QChar(0x20). Dieses Zeichen wird verwendet, um beim Erzeugen von Text die Leerzeichen in Feldern aufzufüllen.
Beispiel:
QString s; QTextStream out(&s); out.setFieldWidth(10); out.setFieldAlignment(QTextStream::AlignCenter); out.setPadChar('-'); out << "Qt" << "rocks!";
Die Zeichenfolge s
enthält:
----Qt------rocks!--
Siehe auch padChar() und setFieldWidth().
void QTextStream::setRealNumberNotation(QTextStream::RealNumberNotation notation)
Setzt die Notation der reellen Zahlen auf notation (SmartNotation, FixedNotation, ScientificNotation). Beim Lesen und Erzeugen 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)
Setzt die Genauigkeit von reellen Zahlen auf precision. Dieser Wert beschreibt die Anzahl der Nachkommastellen, die QTextStream bei der Generierung von reellen Zahlen (FixedNotation, ScientificNotation) schreiben soll, oder die maximale Anzahl signifikanter Stellen (SmartNotation).
Die Genauigkeit kann 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 die angegebene 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, unter Verwendung der angegebenen openMode. Wenn bereits ein Gerät zugewiesen wurde, ruft QTextStream flush () auf, bevor es ersetzt wird.
Siehe auch string() und setDevice().
void QTextStream::skipWhiteSpace()
Liest und verwirft Leerzeichen aus dem Stream, bis entweder ein Zeichen ohne Leerzeichen entdeckt wird oder bis atEnd() true zurückgibt. Diese Funktion ist nützlich, wenn ein Stream Zeichen für Zeichen gelesen wird.
Whitespace-Zeichen sind alle Zeichen, für die QChar::isSpace() 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 aktuelle Zeichenkette zurück, die dem QTextStream zugewiesen wurde, oder nullptr
, wenn keine Zeichenkette zugewiesen wurde.
Siehe auch setString() und device().
QTextStream &QTextStream::operator<<(QChar c)
Schreibt das Zeichen c in den Stream und gibt dann einen Verweis auf QTextStream zurück.
Siehe auch setFieldWidth().
QTextStream &QTextStream::operator<<(const QString &string)
Schreibt die Zeichenkette string in den Stream und gibt einen Verweis auf QTextStream zurück. Die Zeichenkette wird zunächst mit der zugewiesenen Kodierung kodiert (die Vorgabe ist UTF-8), 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 dann einen Verweis auf QTextStream zurück. QTextStream speichert sie standardmäßig unter Verwendung von SmartNotation mit einer Genauigkeit von bis zu 6 Stellen. Sie können die Textdarstellung ändern, die QTextStream für reelle Zahlen verwendet, indem Sie setRealNumberNotation(), setRealNumberPrecision() und setNumberFlags() aufrufen.
Siehe auch setFieldWidth(), setRealNumberNotation(), setRealNumberPrecision(), und setNumberFlags().
QTextStream &QTextStream::operator<<(short i)
Schreibt die Integer-Zahl i in den Stream und gibt dann einen Verweis auf QTextStream zurück. Standardmäßig wird die Zahl in dezimaler Form gespeichert, aber Sie können die Basis auch durch Aufruf von setIntegerBase() einstellen.
Siehe auch setFieldWidth() und setNumberFlags().
QTextStream &QTextStream::operator<<(QLatin1StringView string)
Dies ist eine überladene Funktion.
Schreibt string in den Stream und gibt einen Verweis auf die QTextStream zurück.
QTextStream &QTextStream::operator<<(QStringView string)
Dies ist eine überladene Funktion.
Schreibt string in den Stream und gibt einen Verweis auf die QTextStream zurück.
QTextStream &QTextStream::operator<<(char c)
Dies ist eine überladene Funktion.
Konvertiert c von ASCII in QChar und schreibt es dann in den Stream.
[since 6.3.1]
QTextStream &QTextStream::operator<<(char16_t c)
Dies ist eine überladene Funktion.
Schreibt das Unicode-Zeichen c in den Stream und gibt dann eine Referenz auf QTextStream zurück.
Diese Funktion wurde in Qt 6.3.1 eingeführt.
QTextStream &QTextStream::operator<<(const QByteArray &array)
Dies ist eine überladene Funktion.
Schreibt array in den Stream. Der Inhalt von array wird mit QString::fromUtf8() konvertiert.
QTextStream &QTextStream::operator<<(const char *string)
Dies ist eine überladene Funktion.
Schreibt die konstante Zeichenkette, auf die string zeigt, in den Stream. string wird in UTF-8-Kodierung angenommen. 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 abgeschlossen ist. Wenn es kein abschließendes '\0'-Zeichen gibt, kann Ihre Anwendung abstürzen.
QTextStream &QTextStream::operator<<(const void *ptr)
Dies ist eine überladene Funktion.
Schreibt ptr in den Stream als hexadezimale Zahl mit einer Basis.
QTextStream &QTextStream::operator<<(double f)
Dies ist eine überladene Funktion.
Schreibt das Double f in den Stream.
QTextStream &QTextStream::operator<<(int i)
Dies ist eine überladene Funktion.
Schreibt den signierten int i in den Stream.
QTextStream &QTextStream::operator<<(long i)
Dies ist eine überladene Funktion.
Schreibt den signierten Long-Wert i in den Stream.
QTextStream &QTextStream::operator<<(qlonglong i)
Dies ist eine überladene Funktion.
Schreibt die qlonglong i in den Stream.
QTextStream &QTextStream::operator<<(qulonglong i)
Dies ist eine überladene Funktion.
Schreibt die qulonglong i in den Stream.
QTextStream &QTextStream::operator<<(unsigned int i)
Dies ist eine überladene Funktion.
Schreibt den unsigned int i in den Stream.
QTextStream &QTextStream::operator<<(unsigned long i)
Dies ist eine überladene Funktion.
Schreibt den unsigned long i in den Stream.
QTextStream &QTextStream::operator<<(unsigned short i)
Dies ist eine überladene Funktion.
Schreibt die unsigned short i in den Stream.
QTextStream &QTextStream::operator>>(QChar &c)
Liest ein Zeichen aus dem Stream und speichert es in c. Gibt einen Verweis auf QTextStream zurück, so dass mehrere Operatoren verschachtelt werden können. Beispiel:
QTextStream in(file); QChar ch1, ch2, ch3; in >> ch1 >> ch2 >> ch3;
Whitespace wird nicht übersprungen.
QTextStream &QTextStream::operator>>(QString &str)
Liest ein Wort aus dem Stream und speichert es in str und gibt dann einen Verweis auf den Stream zurück. Wörter werden durch Leerzeichen getrennt (d. h. alle Zeichen, für die QChar::isSpace() 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 und gibt dann einen Verweis auf QTextStream zurück. Die Zahl wird in den richtigen Typ umgewandelt. Wenn keine reelle Zahl im Stream erkannt wird, wird f auf 0,0 gesetzt.
Als besondere Ausnahme erlaubt QTextStream die Zeichenketten "nan" und "inf" zur Darstellung von NAN und INF Floats oder Doubles.
Führende Leerzeichen werden übersprungen.
QTextStream &QTextStream::operator>>(short &i)
Liest eine Ganzzahl aus dem Stream und speichert sie in i und gibt dann einen Verweis auf QTextStream zurück. Die Zahl wird in den richtigen Typ umgewandelt, bevor sie gespeichert wird. Wurde im Datenstrom keine Zahl erkannt, wird i auf 0 gesetzt.
Standardmäßig versucht QTextStream, die Basis der Zahl anhand der folgenden Regeln zu ermitteln:
Präfix | Basis |
---|---|
"0b" oder "0B" | 2 (binär) |
"0" gefolgt von "0-7" | 8 (oktal) |
"sonst "0 | 10 (dezimal) |
"0x" oder "0X" | 16 (hexadezimal) |
"1" bis "9" | 10 (dezimal) |
Durch den Aufruf von setIntegerBase() können Sie die Integer-Basis explizit angeben. Dadurch wird die automatische Erkennung ausgeschaltet und QTextStream etwas beschleunigt.
Führende Leerzeichen werden übersprungen.
QTextStream &QTextStream::operator>>(QByteArray &array)
Dies ist eine überladene Funktion.
Konvertiert das Wort in UTF-8 und speichert es dann in array.
Siehe auch QString::toLatin1().
QTextStream &QTextStream::operator>>(char &c)
Dies ist eine überladene Funktion.
Liest ein Zeichen aus dem Stream und speichert es in c. Das Zeichen aus dem Stream wird in ISO-8859-1 konvertiert, bevor es gespeichert wird.
Siehe auch QChar::toLatin1().
QTextStream &QTextStream::operator>>(char *c)
Dies ist eine überladene Funktion.
Konvertiert das Wort in UTF-8 und speichert es in c, abgeschlossen durch ein '\0' Zeichen. Wenn kein Wort vorhanden ist, wird nur das '\0'-Zeichen gespeichert.
Warnung: Obwohl dieser Operator praktisch ist, ist er gefährlich und muss mit Vorsicht verwendet werden. QTextStream geht davon aus, dass c auf einen Puffer zeigt, der genügend Platz für das Wort bietet. Wenn der Puffer zu klein ist, kann Ihre Anwendung abstürzen. Für ein Wort, das aus n
QChars besteht, muss der Puffer mindestens 3*n+1
Zeichen lang sein.
Wenn möglich, verwenden Sie stattdessen den QByteArray Operator.
[since 6.4]
QTextStream &QTextStream::operator>>(char16_t &c)
Dies ist eine überladene Funktion.
Liest ein Zeichen aus dem Stream und speichert es in c.
Diese Funktion wurde in Qt 6.4 eingeführt.
QTextStream &QTextStream::operator>>(double &f)
Dies ist eine überladene Funktion.
Speichert die reelle Zahl in dem Double f.
QTextStream &QTextStream::operator>>(int &i)
Dies ist eine überladene Funktion.
Speichert die Ganzzahl in dem vorzeichenbehafteten int i.
QTextStream &QTextStream::operator>>(long &i)
Dies ist eine überladene Funktion.
Speichert die Ganzzahl im vorzeichenbehafteten Long-Format i.
QTextStream &QTextStream::operator>>(qlonglong &i)
Dies ist eine überladene Funktion.
Speichert die Ganzzahl in der qlonglong i.
QTextStream &QTextStream::operator>>(qulonglong &i)
Dies ist eine überladene Funktion.
Speichert die Ganzzahl in der qulonglong i.
QTextStream &QTextStream::operator>>(unsigned int &i)
Dies ist eine überladene Funktion.
Speichert die Ganzzahl in den unsigned int i.
QTextStream &QTextStream::operator>>(unsigned long &i)
Dies ist eine überladene Funktion.
Speichert die Ganzzahl in dem vorzeichenlosen long i.
QTextStream &QTextStream::operator>>(unsigned short &i)
Dies ist eine überladene Funktion.
Speichert die Ganzzahl in der vorzeichenlosen Kurzform i.
Verwandte Nicht-Mitglieder
QTextStreamManipulator qSetFieldWidth(int width)
Äquivalent zu QTextStream::setFieldWidth(width).
QTextStreamManipulator qSetPadChar(QChar ch)
Äquivalent zu QTextStream::setPadChar(ch).
QTextStreamManipulator qSetRealNumberPrecision(int precision)
Äquivalent zu QTextStream::setRealNumberPrecision(precision).
© 2025 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.