QTextStream 类

QTextStream class provides a convenient interface for reading and writing text. 更多...

头: #include <QTextStream>
qmake: QT += core

注意: 此类的所有函数 可重入 .

公共类型

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 }

公共函数

QTextStream ()
QTextStream (QIODevice * device )
QTextStream (FILE * fileHandle , QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream (QString * string , QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream (QByteArray * array , QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream (const QByteArray & array , QIODevice::OpenMode openMode = QIODevice::ReadOnly)
virtual ~QTextStream ()
bool atEnd () const
bool autoDetectUnicode () const
QTextCodec * codec () const
QIODevice * device () const
FieldAlignment fieldAlignment () const
int fieldWidth () const
void flush ()
bool generateByteOrderMark () const
int integerBase () const
QLocale locale () const
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)
RealNumberNotation realNumberNotation () const
int realNumberPrecision () const
void reset ()
void resetStatus ()
bool seek (qint64 pos )
void setAutoDetectUnicode (bool enabled )
void setCodec (QTextCodec * codec )
void setCodec (const char * codecName )
void setDevice (QIODevice * device )
void setFieldAlignment (FieldAlignment mode )
void setFieldWidth (int width )
void setGenerateByteOrderMark (bool generate )
void setIntegerBase (int base )
void setLocale (const QLocale & locale )
void setNumberFlags (NumberFlags flags )
void setPadChar (QChar ch )
void setRealNumberNotation (RealNumberNotation notation )
void setRealNumberPrecision (int precision )
void setStatus (Status status )
void setString (QString * string , QIODevice::OpenMode openMode = QIODevice::ReadWrite)
void skipWhiteSpace ()
Status status () const
QString * string () const
QTextStream & operator<< (QChar c )
QTextStream & operator<< (char c )
QTextStream & operator<< (signed short i )
QTextStream & operator<< (unsigned short i )
QTextStream & operator<< (signed int i )
QTextStream & operator<< (unsigned int i )
QTextStream & operator<< (signed long i )
QTextStream & operator<< (unsigned long i )
QTextStream & operator<< (qlonglong i )
QTextStream & operator<< (qulonglong i )
QTextStream & operator<< (float f )
QTextStream & operator<< (double f )
QTextStream & operator<< (const QString & string )
QTextStream & operator<< (QLatin1String string )
QTextStream & operator<< (const QStringRef & string )
QTextStream & operator<< (const QByteArray & array )
QTextStream & operator<< (const char * string )
QTextStream & operator<< (const void * ptr )
QTextStream & operator>> (QChar & c )
QTextStream & operator>> (char & c )
QTextStream & operator>> (signed short & i )
QTextStream & operator>> (unsigned short & i )
QTextStream & operator>> (signed int & i )
QTextStream & operator>> (unsigned int & i )
QTextStream & operator>> (signed long & i )
QTextStream & operator>> (unsigned long & i )
QTextStream & operator>> (qlonglong & i )
QTextStream & operator>> (qulonglong & i )
QTextStream & operator>> (float & f )
QTextStream & operator>> (double & f )
QTextStream & operator>> (QString & str )
QTextStream & operator>> (QByteArray & array )
QTextStream & operator>> (char * c )
QTextStream & bin (QTextStream & stream )
QTextStream & bom (QTextStream & stream )
QTextStream & center (QTextStream & stream )
QTextStream & dec (QTextStream & stream )
QTextStream & endl (QTextStream & stream )
QTextStream & fixed (QTextStream & stream )
QTextStream & flush (QTextStream & stream )
QTextStream & forcepoint (QTextStream & stream )
QTextStream & forcesign (QTextStream & stream )
QTextStream & hex (QTextStream & stream )
QTextStream & left (QTextStream & stream )
QTextStream & lowercasebase (QTextStream & stream )
QTextStream & lowercasedigits (QTextStream & stream )
QTextStream & noforcepoint (QTextStream & stream )
QTextStream & noforcesign (QTextStream & stream )
QTextStream & noshowbase (QTextStream & stream )
QTextStream & oct (QTextStream & stream )
QTextStreamManipulator qSetFieldWidth (int width )
QTextStreamManipulator qSetPadChar (QChar ch )
QTextStreamManipulator qSetRealNumberPrecision (int precision )
QTextStream & reset (QTextStream & stream )
QTextStream & right (QTextStream & stream )
QTextStream & scientific (QTextStream & stream )
QTextStream & showbase (QTextStream & stream )
QTextStream & uppercasebase (QTextStream & stream )
QTextStream & uppercasedigits (QTextStream & stream )
QTextStream & ws (QTextStream & stream )

详细描述

QTextStream class provides a convenient interface for reading and writing text.

QTextStream can operate on a QIODevice QByteArray QString 。使用 QTextStream 's streaming operators, you can conveniently read and write words, lines and numbers. For generating text, QTextStream supports formatting options for field padding and alignment, and formatting of numbers. Example:

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

It's also common to use QTextStream to read console input and write console output. QTextStream is locale aware, and will automatically decode standard input using the correct codec. Example:

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

Besides using QTextStream 's constructors, you can also set the device or string QTextStream operates on by calling setDevice () 或 setString (). You can seek to a position by calling seek (),和 atEnd () will return true when there is no data left to be read. If you call flush (), QTextStream will empty all data from its write buffer into the device and call flush () on the device.

在内部, QTextStream uses a Unicode based buffer, and QTextCodec is used by QTextStream to automatically support different character sets. By default, QTextCodec::codecForLocale () is used for reading and writing, but you can also set the codec by calling setCodec (). Automatic Unicode detection is also supported. When this feature is enabled (the default behavior), QTextStream will detect the UTF-16 or the UTF-32 BOM (Byte Order Mark) and switch to the appropriate UTF codec when reading. QTextStream does not write a BOM by default, but you can enable this by calling setGenerateByteOrderMark (true). When QTextStream operates on a QString directly, the codec is disabled.

There are three general ways to use QTextStream when reading text files:

  • Chunk by chunk, by calling readLine () 或 readAll ().
  • Word by word. QTextStream supports streaming into QString s, QByteArray s and char* buffers. Words are delimited by space, and leading white space is automatically skipped.
  • Character by character, by streaming into QChar or char types. This method is often used for convenient input handling when parsing files, independent of character encoding and end-of-line semantics. To skip white space, call skipWhiteSpace ().

Since the text stream uses a buffer, you should not read from the stream using the implementation of a superclass. For instance, if you have a QFile and read from it directly using QFile::readLine () instead of using the stream, the text stream's internal position will be out of sync with the file's position.

By default, when reading numbers from a stream of text, QTextStream will automatically detect the number's base representation. For example, if the number starts with "0x", it is assumed to be in hexadecimal form. If it starts with the digits 1-9, it is assumed to be in decimal form, and so on. You can set the integer base, thereby disabling the automatic detection, by calling setIntegerBase ()。范例:

QTextStream in("0x50 0x20");
int firstNumber, secondNumber;
in >> firstNumber;             // firstNumber == 80
in >> dec >> secondNumber;     // secondNumber == 0
char ch;
in >> ch;                      // ch == 'x'
					

QTextStream supports many formatting options for generating text. You can set the field width and pad character by calling setFieldWidth () 和 setPadChar ()。使用 setFieldAlignment () to set the alignment within each field. For real numbers, call setRealNumberNotation () 和 setRealNumberPrecision () to set the notation ( SmartNotation , ScientificNotation , FixedNotation ) and precision in digits of the generated number. Some extra number formatting options are also available through setNumberFlags ().

<iostream> in the standard C++ library, QTextStream also defines several global manipulator functions:

操作符 描述
bin 如同 setIntegerBase (2).
oct 如同 setIntegerBase (8).
dec 如同 setIntegerBase (10).
hex 如同 setIntegerBase (16).
showbase 如同 setNumberFlags ( numberFlags () | ShowBase ).
forcesign 如同 setNumberFlags ( numberFlags () | ForceSign ).
forcepoint 如同 setNumberFlags ( numberFlags () | ForcePoint ).
noshowbase 如同 setNumberFlags ( numberFlags () & ~ ShowBase ).
noforcesign 如同 setNumberFlags ( numberFlags () & ~ ForceSign ).
noforcepoint 如同 setNumberFlags ( numberFlags () & ~ ForcePoint ).
uppercasebase 如同 setNumberFlags ( numberFlags () | UppercaseBase ).
uppercasedigits 如同 setNumberFlags ( numberFlags () | UppercaseDigits ).
lowercasebase 如同 setNumberFlags ( numberFlags () & ~ UppercaseBase ).
lowercasedigits 如同 setNumberFlags ( numberFlags () & ~ UppercaseDigits ).
fixed 如同 setRealNumberNotation ( FixedNotation ).
scientific 如同 setRealNumberNotation ( ScientificNotation ).
left 如同 setFieldAlignment ( AlignLeft ).
right 如同 setFieldAlignment ( AlignRight ).
center 如同 setFieldAlignment ( AlignCenter ).
endl Same as operator<<('\n') and flush ().
flush 如同 flush ().
reset 如同 reset ().
ws 如同 skipWhiteSpace ().
bom 如同 setGenerateByteOrderMark (true)。

In addition, Qt provides three global manipulators that take a parameter: qSetFieldWidth (), qSetPadChar (),和 qSetRealNumberPrecision ().

另请参阅 QDataStream , QIODevice , QFile , QBuffer , QTcpSocket ,和 文本编解码器范例 .

成员类型文档编制

enum QTextStream:: FieldAlignment

This enum specifies how to align text in fields when the field is wider than the text that occupies it.

常量 描述
QTextStream::AlignLeft 0 Pad on the right side of fields.
QTextStream::AlignRight 1 Pad on the left side of fields.
QTextStream::AlignCenter 2 Pad on both sides of field.
QTextStream::AlignAccountingStyle 3 Same as AlignRight, except that the sign of a number is flush left.

另请参阅 setFieldAlignment ().

enum QTextStream:: NumberFlag
flags QTextStream:: NumberFlags

This enum specifies various flags that can be set to affect the output of integers, float s, and double s.

常量 描述
QTextStream::ShowBase 0x1 Show the base as a prefix if the base is 16 ("0x"), 8 ("0"), or 2 ("0b").
QTextStream::ForcePoint 0x2 Always put the decimal separator in numbers, even if there are no decimals.
QTextStream::ForceSign 0x4 Always put the sign in numbers, even for positive numbers.
QTextStream::UppercaseBase 0x8 Use uppercase versions of base prefixes ("0X", "0B").
QTextStream::UppercaseDigits 0x10 Use uppercase letters for expressing digits 10 to 35 instead of lowercase.

The NumberFlags type is a typedef for QFlags <NumberFlag>. It stores an OR combination of NumberFlag values.

另请参阅 setNumberFlags ().

enum QTextStream:: RealNumberNotation

This enum specifies which notations to use for expressing float and double as strings.

常量 描述
QTextStream::ScientificNotation 2 Scientific notation ( printf() 's %e 标志)。
QTextStream::FixedNotation 1 Fixed-point notation ( printf() 's %f 标志)。
QTextStream::SmartNotation 0 Scientific or fixed-point notation, depending on which makes most sense ( printf() 's %g 标志)。

另请参阅 setRealNumberNotation ().

enum QTextStream:: Status

此枚举描述文本流的当前状态。

常量 描述
QTextStream::Ok 0 The text stream is operating normally.
QTextStream::ReadPastEnd 1 The text stream has read past the end of the data in the underlying device.
QTextStream::ReadCorruptData 2 The text stream has read corrupt data.
QTextStream::WriteFailed 3 The text stream cannot write to the underlying device.

另请参阅 status ().

成员函数文档编制

QTextStream:: QTextStream ()

构造 QTextStream . Before you can use it for reading or writing, you must assign a device or a string.

另请参阅 setDevice () 和 setString ().

QTextStream:: QTextStream ( QIODevice * device )

构造 QTextStream that operates on device .

QTextStream:: QTextStream ( FILE * fileHandle , QIODevice::OpenMode openMode = QIODevice::ReadWrite)

构造 QTextStream that operates on fileHandle ,使用 openMode to define the open mode. Internally, a QFile is created to handle the FILE pointer.

This constructor is useful for working directly with the common FILE based input and output streams: stdin, stdout and stderr. Example:

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

QTextStream:: QTextStream ( QString * string , QIODevice::OpenMode openMode = QIODevice::ReadWrite)

构造 QTextStream that operates on string ,使用 openMode to define the open mode.

QTextStream:: QTextStream ( QByteArray * array , QIODevice::OpenMode openMode = QIODevice::ReadWrite)

构造 QTextStream that operates on array ,使用 openMode to define the open mode. Internally, the array is wrapped by a QBuffer .

QTextStream:: QTextStream (const QByteArray & array , QIODevice::OpenMode openMode = QIODevice::ReadOnly)

构造 QTextStream that operates on array ,使用 openMode to define the open mode. The array is accessed as read-only, regardless of the values in openMode .

This constructor is convenient for working on constant strings. Example:

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] QTextStream:: ~QTextStream ()

销毁 QTextStream .

If the stream operates on a device, flush () will be called implicitly. Otherwise, the device is unaffected.

bool QTextStream:: atEnd () const

返回 true if there is no more data to be read from the QTextStream ;否则返回 false . This is similar to, but not the same as calling QIODevice::atEnd (), as QTextStream also takes into account its internal Unicode buffer.

bool QTextStream:: autoDetectUnicode () const

返回 true if automatic Unicode detection is enabled, otherwise returns false . Automatic Unicode detection is enabled by default.

另请参阅 setAutoDetectUnicode () 和 setCodec ().

QTextCodec *QTextStream:: codec () const

Returns the codec that is current assigned to the stream.

另请参阅 setCodec (), setAutoDetectUnicode (),和 locale ().

QIODevice *QTextStream:: device () const

返回被当前设备关联的 QTextStream , or 0 if no device has been assigned.

另请参阅 setDevice () 和 string ().

FieldAlignment QTextStream:: fieldAlignment () const

Returns the current field alignment.

另请参阅 setFieldAlignment () 和 fieldWidth ().

int QTextStream:: fieldWidth () const

Returns the current field width.

另请参阅 setFieldWidth ().

void QTextStream:: flush ()

Flushes any buffered data waiting to be written to the device.

QTextStream operates on a string, this function does nothing.

bool QTextStream:: generateByteOrderMark () const

返回 true if QTextStream is set to generate the UTF BOM (Byte Order Mark) when using a UTF codec; otherwise returns false . UTF BOM generation is set to false by default.

另请参阅 setGenerateByteOrderMark ().

int QTextStream:: integerBase () const

Returns the current base of integers. 0 means that the base is detected when reading, or 10 (decimal) when generating numbers.

另请参阅 setIntegerBase (), QString::number (),和 numberFlags ().

QLocale QTextStream:: locale () const

Returns the locale for this stream. The default locale is C.

该函数在 Qt 4.5 引入。

另请参阅 setLocale ().

NumberFlags QTextStream:: numberFlags () const

Returns the current number flags.

另请参阅 setNumberFlags (), integerBase (),和 realNumberNotation ().

QChar QTextStream:: padChar () const

Returns the current pad character.

另请参阅 setPadChar () 和 setFieldWidth ().

qint64 QTextStream:: pos () const

Returns the device position corresponding to the current position of the stream, or -1 if an error occurs (e.g., if there is no device or string, or if there's a device error).

因为 QTextStream is buffered, this function may have to seek the device to reconstruct a valid device position. This operation can be expensive, so you may want to avoid calling this function in a tight loop.

该函数在 Qt 4.2 引入。

另请参阅 seek ().

QString QTextStream:: read ( qint64 maxlen )

读取最多 maxlen characters from the stream, and returns the data read as a QString .

该函数在 Qt 4.1 引入。

另请参阅 readAll (), readLine (),和 QIODevice::read ().

QString QTextStream:: readAll ()

Reads the entire content of the stream, and returns it as a QString . Avoid this function when working on large files, as it will consume a significant amount of memory.

调用 readLine() is better if you do not know how much data is available.

另请参阅 readLine ().

QString QTextStream:: readLine ( qint64 maxlen = 0)

Reads one line of text from the stream, and returns it as a QString . The maximum allowed line length is set to maxlen . If the stream contains lines longer than this, then the lines will be split after maxlen characters and returned in parts.

maxlen is 0, the lines can be of any length.

The returned line has no trailing end-of-line characters ("\n" or "\r\n"), so calling QString::trimmed () can be unnecessary.

If the stream has read to the end of the file, readLine() will return a null QString . For strings, or for devices that support it, you can explicitly test for the end of the stream using atEnd ().

另请参阅 readAll () 和 QIODevice::readLine ().

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

Reads one line of text from the stream into line 。若 line is 0, the read line is not stored.

The maximum allowed line length is set to maxlen . If the stream contains lines longer than this, then the lines will be split after maxlen characters and returned in parts.

maxlen is 0, the lines can be of any length.

The resulting line has no trailing end-of-line characters ("\n" or "\r\n"), so calling QString::trimmed () can be unnecessary.

line has sufficient capacity for the data that is about to be read, this function may not need to allocate new memory. Because of this, it can be faster than readLine ().

返回 false if the stream has read to the end of the file or an error has occurred; otherwise returns true . The contents in line before the call are discarded in any case.

该函数在 Qt 5.5 引入。

另请参阅 readAll () 和 QIODevice::readLine ().

RealNumberNotation QTextStream:: realNumberNotation () const

Returns the current real number notation.

另请参阅 setRealNumberNotation (), realNumberPrecision (), numberFlags (),和 integerBase ().

int QTextStream:: realNumberPrecision () const

Returns the current real number precision, or the number of fraction digits QTextStream will write when generating real numbers.

另请参阅 setRealNumberPrecision (), setRealNumberNotation (), realNumberNotation (), numberFlags (),和 integerBase ().

void QTextStream:: reset ()

Resets QTextStream 's formatting options, bringing it back to its original constructed state. The device, string and any buffered data is left untouched.

void QTextStream:: resetStatus ()

Resets the status of the text stream.

该函数在 Qt 4.1 引入。

另请参阅 QTextStream::Status , status (),和 setStatus ().

bool QTextStream:: seek ( qint64 pos )

Seeks to the position pos in the device. Returns true 当成功时;否则返回 false .

void QTextStream:: setAutoDetectUnicode ( bool enabled )

enabled is true, QTextStream will attempt to detect Unicode encoding by peeking into the stream data to see if it can find the UTF-16 or UTF-32 BOM (Byte Order Mark). If this mark is found, QTextStream will replace the current codec with the UTF codec.

This function can be used together with setCodec (). It is common to set the codec to UTF-8, and then enable UTF-16 detection.

另请参阅 autoDetectUnicode () 和 setCodec ().

void QTextStream:: setCodec ( QTextCodec * codec )

Sets the codec for this stream to codec . The codec is used for decoding any data that is read from the assigned device, and for encoding any data that is written. By default, QTextCodec::codecForLocale () is used, and automatic unicode detection is enabled.

QTextStream operates on a string, this function does nothing.

警告: If you call this function while the text stream is reading from an open sequential socket, the internal buffer may still contain text decoded using the old codec.

另请参阅 codec (), setAutoDetectUnicode (),和 setLocale ().

void QTextStream:: setCodec (const char * codecName )

Sets the codec for this stream to the QTextCodec 为指定编码通过 codecName 。常见值对于 codecName 包括 ISO 8859-1、UTF-8 及 UTF-16。若编码无法识别,则什么都不发生。

范例:

QTextStream out(&file);
out.setCodec("UTF-8");
					

另请参阅 QTextCodec::codecForName () 和 setLocale ().

void QTextStream:: setDevice ( QIODevice * device )

把当前设备设为 device . If a device has already been assigned, QTextStream will call flush () before the old device is replaced.

注意: This function resets locale to the default locale ('C') and codec to the default codec, QTextCodec::codecForLocale ().

另请参阅 device () 和 setString ().

void QTextStream:: setFieldAlignment ( FieldAlignment mode )

Sets the field alignment to mode . When used together with setFieldWidth (), this function allows you to generate formatted output with text aligned to the left, to the right or center aligned.

另请参阅 fieldAlignment () 和 setFieldWidth ().

void QTextStream:: setFieldWidth ( int width )

Sets the current field width to width 。若 width is 0 (the default), the field width is equal to the length of the generated text.

注意: The field width applies to every element appended to this stream after this function has been called (e.g., it also pads endl). This behavior is different from similar classes in the STL, where the field width only applies to the next element.

另请参阅 fieldWidth () 和 setPadChar ().

void QTextStream:: setGenerateByteOrderMark ( bool generate )

generate is true and a UTF codec is used, QTextStream will insert the BOM (Byte Order Mark) before any data has been written to the device. If generate is false, no BOM will be inserted. This function must be called before any data is written. Otherwise, it does nothing.

另请参阅 generateByteOrderMark () 和 bom ().

void QTextStream:: setIntegerBase ( int base )

Sets the base of integers to base , both for reading and for generating numbers. base can be either 2 (binary), 8 (octal), 10 (decimal) or 16 (hexadecimal). If base is 0, QTextStream will attempt to detect the base by inspecting the data on the stream. When generating numbers, QTextStream assumes base is 10 unless the base has been set explicitly.

另请参阅 integerBase (), QString::number (),和 setNumberFlags ().

void QTextStream:: setLocale (const QLocale & locale )

Sets the locale for this stream to locale . The specified locale is used for conversions between numbers and their string representations.

The default locale is C and it is a special case - the thousands group separator is not used for backward compatibility reasons.

该函数在 Qt 4.5 引入。

另请参阅 locale ().

void QTextStream:: setNumberFlags ( NumberFlags flags )

Sets the current number flags to flags . flags is a set of flags from the NumberFlag enum, and describes options for formatting generated code (e.g., whether or not to always write the base or sign of a number).

另请参阅 numberFlags (), setIntegerBase (),和 setRealNumberNotation ().

void QTextStream:: setPadChar ( QChar ch )

Sets the pad character to ch . The default value is the ASCII space character (' '), or QChar (0x20). This character is used to fill in the space in fields when generating text.

范例:

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

字符串 s contains:

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

另请参阅 padChar () 和 setFieldWidth ().

void QTextStream:: setRealNumberNotation ( RealNumberNotation notation )

Sets the real number notation to notation ( SmartNotation , FixedNotation , ScientificNotation ). When reading and generating numbers, QTextStream uses this value to detect the formatting of real numbers.

另请参阅 realNumberNotation (), setRealNumberPrecision (), setNumberFlags (),和 setIntegerBase ().

void QTextStream:: setRealNumberPrecision ( int precision )

Sets the precision of real numbers to precision . This value describes the number of fraction digits QTextStream should write when generating real numbers.

The precision cannot be a negative value. The default value is 6.

另请参阅 realNumberPrecision () 和 setRealNumberNotation ().

void QTextStream:: setStatus ( Status status )

Sets the status of the text stream to the status 给定。

Subsequent calls to setStatus() are ignored until resetStatus () 被调用。

该函数在 Qt 4.1 引入。

另请参阅 Status , status (),和 resetStatus ().

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

Sets the current string to string ,使用给定 openMode . If a device has already been assigned, QTextStream will call flush () before replacing it.

另请参阅 string () 和 setDevice ().

void QTextStream:: skipWhiteSpace ()

Reads and discards whitespace from the stream until either a non-space character is detected, or until atEnd () returns true. This function is useful when reading a stream character by character.

Whitespace characters are all characters for which QChar::isSpace () 返回 true .

另请参阅 operator>> ().

Status QTextStream:: status () const

返回文本流的状态。

另请参阅 QTextStream::Status , setStatus (),和 resetStatus ().

QString *QTextStream:: string () const

Returns the current string assigned to the QTextStream , or 0 if no string has been assigned.

另请参阅 setString () 和 device ().

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

写入字符 c to the stream, then returns a reference to the QTextStream .

另请参阅 setFieldWidth ().

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

这是重载函数。

转换 c from ASCII to a QChar , then writes it to the stream.

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

Writes the integer number i to the stream, then returns a reference to the QTextStream . By default, the number is stored in decimal form, but you can also set the base by calling setIntegerBase ().

另请参阅 setFieldWidth () 和 setNumberFlags ().

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

这是重载函数。

Writes the unsigned short i to the stream.

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

这是重载函数。

Writes the signed int i to the stream.

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

这是重载函数。

Writes the unsigned int i to the stream.

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

这是重载函数。

Writes the signed long i to the stream.

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

这是重载函数。

Writes the unsigned long i to the stream.

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

这是重载函数。

Writes the qlonglong i to the stream.

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

这是重载函数。

Writes the qulonglong i to the stream.

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

Writes the real number f to the stream, then returns a reference to the QTextStream . By default, QTextStream stores it using SmartNotation , with up to 6 digits of precision. You can change the textual representation QTextStream will use for real numbers by calling setRealNumberNotation (), setRealNumberPrecision () 和 setNumberFlags ().

另请参阅 setFieldWidth (), setRealNumberNotation (), setRealNumberPrecision (),和 setNumberFlags ().

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

这是重载函数。

Writes the double f to the stream.

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

Writes the string string to the stream, and returns a reference to the QTextStream . The string is first encoded using the assigned codec (the default codec is QTextCodec::codecForLocale ()) before it is written to the stream.

另请参阅 setFieldWidth () 和 setCodec ().

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

这是重载函数。

写入 string to the stream, and returns a reference to the QTextStream .

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

这是重载函数。

写入 string to the stream, and returns a reference to the QTextStream .

该函数在 Qt 5.6 引入。

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

这是重载函数。

写入 array to the stream. The contents of array are converted with QString::fromUtf8 ().

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

这是重载函数。

Writes the constant string pointed to by string to the stream. string is assumed to be in ISO-8859-1 encoding. This operator is convenient when working with constant string data. Example:

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

警告: QTextStream assumes that string points to a string of text, terminated by a '\0' character. If there is no terminating '\0' character, your application may crash.

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

这是重载函数。

写入 ptr to the stream as a hexadecimal number with a base.

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

Reads a character from the stream and stores it in c . Returns a reference to the QTextStream , so several operators can be nested. Example:

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

Whitespace is not skipped.

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

这是重载函数。

Reads a character from the stream and stores it in c . The character from the stream is converted to ISO-5589-1 before it is stored.

另请参阅 QChar::toLatin1 ().

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

Reads an integer from the stream and stores it in i , then returns a reference to the QTextStream . The number is cast to the correct type before it is stored. If no number was detected on the stream, i is set to 0.

默认情况下, QTextStream will attempt to detect the base of the number using the following rules:

Prefix Base
"0b" or "0B" 2 (binary)
"0" followed by "0-7" 8 (octal)
"0" otherwise 10 (decimal)
"0x" or "0X" 16 (hexadecimal)
"1" to "9" 10 (decimal)

By calling setIntegerBase (), you can specify the integer base explicitly. This will disable the auto-detection, and speed up QTextStream slightly.

Leading whitespace is skipped.

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

这是重载函数。

Stores the integer in the unsigned short i .

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

这是重载函数。

Stores the integer in the signed int i .

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

这是重载函数。

Stores the integer in the unsigned int i .

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

这是重载函数。

Stores the integer in the signed long i .

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

这是重载函数。

Stores the integer in the unsigned long i .

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

这是重载函数。

Stores the integer in the qlonglong i .

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

这是重载函数。

Stores the integer in the qulonglong i .

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

Reads a real number from the stream and stores it in f , then returns a reference to the QTextStream . The number is cast to the correct type. If no real number is detect on the stream, f is set to 0.0.

As a special exception, QTextStream allows the strings "nan" and "inf" to represent NAN and INF floats or doubles.

Leading whitespace is skipped.

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

这是重载函数。

Stores the real number in the double f .

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

Reads a word from the stream and stores it in str , then returns a reference to the stream. Words are separated by whitespace (i.e., all characters for which QChar::isSpace () 返回 true ).

Leading whitespace is skipped.

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

这是重载函数。

Converts the word to ISO-8859-1, then stores it in array .

另请参阅 QString::toLatin1 ().

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

这是重载函数。

Stores the word in c , terminated by a '\0' character. If no word is available, only the '\0' character is stored.

Warning: Although convenient, this operator is dangerous and must be used with care. QTextStream assumes that c points to a buffer with enough space to hold the word. If the buffer is too small, your application may crash.

If possible, use the QByteArray operator instead.

相关非成员

QTextStream & bin ( QTextStream & stream )

调用 QTextStream::setIntegerBase (2) on stream 并返回 stream .

另请参阅 oct (), dec (), hex (),和 QTextStream manipulators .

QTextStream & bom ( QTextStream & stream )

Toggles insertion of the Byte Order Mark on stream when QTextStream is used with a UTF codec.

另请参阅 QTextStream::setGenerateByteOrderMark () 和 QTextStream manipulators .

QTextStream & center ( QTextStream & stream )

调用 QTextStream::setFieldAlignment ( QTextStream::AlignCenter ) on stream 并返回 stream .

另请参阅 left (), right (),和 QTextStream manipulators .

QTextStream & dec ( QTextStream & stream )

调用 QTextStream::setIntegerBase (10) on stream 并返回 stream .

另请参阅 bin (), oct (), hex (),和 QTextStream manipulators .

QTextStream & endl ( QTextStream & stream )

写入 \n 到 stream 并刷新流。

相当于

stream << '\n' << flush;
					

Note: On Windows, all '\n' characters are written as '\r\n' if QTextStream 's device or string is opened using the QIODevice::Text 标志。

另请参阅 flush (), reset (),和 QTextStream manipulators .

QTextStream & fixed ( QTextStream & stream )

调用 QTextStream::setRealNumberNotation ( QTextStream::FixedNotation ) on stream 并返回 stream .

另请参阅 scientific () 和 QTextStream manipulators .

QTextStream & flush ( QTextStream & stream )

调用 QTextStream::flush () 在 stream 并返回 stream .

另请参阅 endl (), reset (),和 QTextStream manipulators .

QTextStream & forcepoint ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () | QTextStream::ForcePoint ) on stream 并返回 stream .

另请参阅 noforcepoint (), forcesign (), showbase (),和 QTextStream manipulators .

QTextStream & forcesign ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () | QTextStream::ForceSign ) on stream 并返回 stream .

另请参阅 noforcesign (), forcepoint (), showbase (),和 QTextStream manipulators .

QTextStream & hex ( QTextStream & stream )

调用 QTextStream::setIntegerBase (16) on stream 并返回 stream .

注意: The hex modifier can only be used for writing to streams.

另请参阅 bin (), oct (), dec (),和 QTextStream manipulators .

QTextStream & left ( QTextStream & stream )

调用 QTextStream::setFieldAlignment ( QTextStream::AlignLeft ) on stream 并返回 stream .

另请参阅 right (), center (),和 QTextStream manipulators .

QTextStream & lowercasebase ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () & ~ QTextStream::UppercaseBase ) on stream 并返回 stream .

另请参阅 uppercasebase (), lowercasedigits (),和 QTextStream manipulators .

QTextStream & lowercasedigits ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () & ~ QTextStream::UppercaseDigits ) on stream 并返回 stream .

另请参阅 uppercasedigits (), lowercasebase (),和 QTextStream manipulators .

QTextStream & noforcepoint ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () & ~ QTextStream::ForcePoint ) on stream 并返回 stream .

另请参阅 forcepoint (), noforcesign (), noshowbase (),和 QTextStream manipulators .

QTextStream & noforcesign ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () & ~ QTextStream::ForceSign ) on stream 并返回 stream .

另请参阅 forcesign (), noforcepoint (), noshowbase (),和 QTextStream manipulators .

QTextStream & noshowbase ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () & ~ QTextStream::ShowBase ) on stream 并返回 stream .

另请参阅 showbase (), noforcesign (), noforcepoint (),和 QTextStream manipulators .

QTextStream & oct ( QTextStream & stream )

调用 QTextStream::setIntegerBase (8) on stream 并返回 stream .

另请参阅 bin (), dec (), hex (),和 QTextStream manipulators .

QTextStreamManipulator qSetFieldWidth ( int width )

相当于 QTextStream::setFieldWidth ( width ).

QTextStreamManipulator qSetPadChar ( QChar ch )

相当于 QTextStream::setPadChar ( ch ).

QTextStreamManipulator qSetRealNumberPrecision ( int precision )

相当于 QTextStream::setRealNumberPrecision ( precision ).

QTextStream & reset ( QTextStream & stream )

调用 QTextStream::reset () 在 stream 并返回 stream .

另请参阅 flush () 和 QTextStream manipulators .

调用 QTextStream::setFieldAlignment ( QTextStream::AlignRight ) on stream 并返回 stream .

另请参阅 left (), center (),和 QTextStream manipulators .

QTextStream & scientific ( QTextStream & stream )

调用 QTextStream::setRealNumberNotation ( QTextStream::ScientificNotation ) on stream 并返回 stream .

另请参阅 fixed () 和 QTextStream manipulators .

QTextStream & showbase ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () | QTextStream::ShowBase ) on stream 并返回 stream .

另请参阅 noshowbase (), forcesign (), forcepoint (),和 QTextStream manipulators .

QTextStream & uppercasebase ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () | QTextStream::UppercaseBase ) on stream 并返回 stream .

另请参阅 lowercasebase (), uppercasedigits (),和 QTextStream manipulators .

QTextStream & uppercasedigits ( QTextStream & stream )

调用 QTextStream::setNumberFlags ( QTextStream::numberFlags () | QTextStream::UppercaseDigits ) on stream 并返回 stream .

另请参阅 lowercasedigits (), uppercasebase (),和 QTextStream manipulators .

QTextStream & ws ( QTextStream & stream )

调用 skipWhiteSpace() on stream 并返回 stream .

另请参阅 QTextStream manipulators .