QTextStream 类

QTextStream 类提供用于读写文本的方便接口。 更多...

头: #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 (const QByteArray & array , QIODevice::OpenMode openMode = QIODevice::ReadOnly)
QTextStream (QByteArray * array , QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream (QString * string , QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream (FILE * fileHandle , QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream (QIODevice * device )
QTextStream ()
virtual ~QTextStream ()
bool atEnd () const
bool autoDetectUnicode () const
QTextCodec * codec () const
QIODevice * device () 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 setCodec (QTextCodec * codec )
void setCodec (const char * codecName )
void setDevice (QIODevice * device )
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 , QIODevice::OpenMode openMode = QIODevice::ReadWrite)
void skipWhiteSpace ()
QTextStream::Status status () const
QString * string () const
QTextStream & operator<< (QChar c )
QTextStream & operator<< (char c )
QTextStream & operator<< (short i )
QTextStream & operator<< (unsigned short i )
QTextStream & operator<< (int i )
QTextStream & operator<< (unsigned int i )
QTextStream & operator<< (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<< (QStringView 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>> (short & i )
QTextStream & operator>> (unsigned short & i )
QTextStream & operator>> (int & i )
QTextStream & operator>> (unsigned int & i )
QTextStream & operator>> (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 )
QTextStreamManipulator qSetFieldWidth (int width )
QTextStreamManipulator qSetPadChar (QChar ch )
QTextStreamManipulator qSetRealNumberPrecision (int precision )

详细描述

QTextStream 可以运转于 QIODevice QByteArray QString 。使用 QTextStream 的流运算符,可以方便地读写单词、行及数字。为生成文本,QTextStream 支持用于字段铺垫和对齐的格式化选项、及数字格式化。范例:

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)) {
    ...
}
					

除使用 QTextStream 构造函数外,还可以设置操作设备 (或字符串) 的 QTextStream 通过调用 setDevice () 或 setString ()。可以寻址到位置通过调用 seek (),和 atEnd () 将返回 true 当没有剩余数据要读取时。若调用 flush (),QTextStream 将清空其写入缓冲中的所有数据并调用 flush () 在设备。

在内部,QTextStream 使用 Unicode 基缓冲,和 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)。当 QTextStream 运转于 QString directly, the codec is disabled.

使用 QTextStream 有 3 种一般办法,当读取文本文件时:

  • 逐个分块,通过调用 readLine () 或 readAll ().
  • 逐个单词。QTextStream 支持流化成 QString s, QByteArray 及 char* 缓冲。单词由空格定界,并自动跳过前导空白。
  • 逐个字符,通过流化成 QChar 或 char 类型。此方法经常用于方便处理输入当剖析文件时,独立于字符编码和行尾语义。要跳过空白,调用 skipWhiteSpace ().

由于文本流使用缓冲,不应该使用超类实现从流读取。例如,若拥有 QFile 并直接读取自它使用 QFile::readLine () 而不是使用流,文本流的内部位置将不同步于文件位置。

默认情况下,当从文本流读取数字时,QTextStream 将自动检测数字的基表示。例如,若数字以 0x 开始,假定是十六进制形式。若以数字 1-9 开始,假定是十进制形式,依此类推。可以设置整数基,从而禁用自动检测,通过调用 setIntegerBase ()。范例:

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

QTextStream 支持用于生成文本的很多格式化选项。可以设置字段宽度,和填充字符通过调用 setFieldWidth () 和 setPadChar ()。使用 setFieldAlignment () 以设置每个字段内的对齐方式。对于实数,调用 setRealNumberNotation () 和 setRealNumberPrecision () 以设置表示法 ( SmartNotation , ScientificNotation , FixedNotation ) 及生成数字的位数精度。一些额外数字格式化选项也是可用的透过 setNumberFlags ().

<iostream> 在标准 C++ 库,QTextStream 还定义了几个全局操纵器函数:

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

此外,Qt 提供了 3 个接受参数的全局操纵符: qSetFieldWidth (), qSetPadChar (),和 qSetRealNumberPrecision ().

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

成员类型文档编制

enum QTextStream:: FieldAlignment

此枚举指定如何对齐字段中的文本,当字段比占据文本更宽时。

常量 描述
QTextStream::AlignLeft 0 铺垫在字段右侧。
QTextStream::AlignRight 1 铺垫在字段左侧。
QTextStream::AlignCenter 2 铺垫在字段的两侧。
QTextStream::AlignAccountingStyle 3 如同 AlignRight,除刷新数字符号左侧外。

另请参阅 setFieldAlignment ().

enum QTextStream:: NumberFlag
flags QTextStream:: NumberFlags

此枚举指定可以设置的各种标志能影响输出对于整数, float ,和 double

常量 描述
QTextStream::ShowBase 0x1 展示作为前缀的基,若基为 16 (0x)、8 (0)、或 2 (0b)。
QTextStream::ForcePoint 0x2 在数字中始终放置小数分隔符,即使没有小数。
QTextStream::ForceSign 0x4 在数字中始终放置符号,即使为正数。
QTextStream::UppercaseBase 0x8 使用大写版本的基前缀 (0X、0B)。
QTextStream::UppercaseDigits 0x10 数字 10-35 使用大写字母表达,而不是小写。

NumberFlags 类型是 typedef 对于 QFlags <NumberFlag>。它存储 NumberFlag 值的 OR 组合。

另请参阅 setNumberFlags ().

enum QTextStream:: RealNumberNotation

此枚举指定使用哪种表示法表达 float and double 以字符串形式。

常量 描述
QTextStream::ScientificNotation 2 科学表示法 ( printf() 's %e 标志)。
QTextStream::FixedNotation 1 定点表示法 ( printf() 's %f 标志)。
QTextStream::SmartNotation 0 科学 (或定点) 表示法,从属哪种更有意义 ( printf() 's %g 标志)。

另请参阅 setRealNumberNotation ().

enum QTextStream:: Status

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

常量 描述
QTextStream::Ok 0 文本流运转正常。
QTextStream::ReadPastEnd 1 文本流已读取过了底层设备的数据末尾。
QTextStream::ReadCorruptData 2 文本流有读取被破坏数据。
QTextStream::WriteFailed 3 文本流无法写入到底层设备。

另请参阅 status ().

成员函数文档编制

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

构造 QTextStream 运转于 array ,使用 openMode 定义打开方式。以只读方式访问数组,不管值 openMode .

此构造函数操控常量字符串很方便。范例:

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;
          ...
    }
}
					

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

构造 QTextStream 运转于 array ,使用 openMode 定义打开方式。在内部,数组的包裹是通过 QBuffer .

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

构造 QTextStream 运转于 string ,使用 openMode 定义打开方式。

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

构造 QTextStream 运转于 fileHandle ,使用 openMode 定义打开方式。在内部, QFile 被创建以处理 FILE 指针。

此构造函数很有用,对于直接工作于基于公共 FILE 的输入和输出流:stdin、stdout 和 stderr。范例:

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

QTextStream:: QTextStream ( QIODevice * device )

构造 QTextStream 运转于 device .

QTextStream:: QTextStream ()

构造 QTextStream。在可以使用它进行读取 (或写入) 之前,必须赋值设备 (或字符串)。

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

[虚拟] QTextStream:: ~QTextStream ()

销毁 QTextStream .

若流运转于设备, flush () 会被隐式调用。否则,设备不受影响。

bool QTextStream:: atEnd () const

返回 true 若没有更多数据能读取自 QTextStream ;否则返回 false 。这类似于,但不同于调用 QIODevice::atEnd (),因为 QTextStream 还考虑其内部 Unicode 缓冲。

bool QTextStream:: autoDetectUnicode () const

返回 true 若启用了自动 Unicode 检测,否则返回 false 。默认启用自动 Unicode 检测。

另请参阅 setAutoDetectUnicode (), setCodec (),和 QTextCodec::codecForUtfText ().

QTextCodec *QTextStream:: codec () const

Returns the codec that is current assigned to the stream.

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

QIODevice *QTextStream:: device () const

返回被当前设备关联的 QTextStream ,或 nullptr 若没有设备被赋值。

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

QTextStream::FieldAlignment QTextStream:: fieldAlignment () const

返回当前字段的对齐。

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

int QTextStream:: fieldWidth () const

返回当前字段的宽度。

另请参阅 setFieldWidth ().

void QTextStream:: flush ()

刷新等待写入设备的任何缓冲数据。

QTextStream 运转于字符串,此函数什么都不做。

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 (字节序标记) 生成被设为 false。

另请参阅 setGenerateByteOrderMark ().

int QTextStream:: integerBase () const

返回整数的当前基。0 意味着检测基当读取时,或 10 (十进制) 当生成数字时。

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

QLocale QTextStream:: locale () const

返回用于此流的区域设置。默认区域设置为 C。

该函数在 Qt 4.5 引入。

另请参阅 setLocale ().

QTextStream::NumberFlags QTextStream:: numberFlags () const

返回当前数字的标志。

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

QChar QTextStream:: padChar () const

返回当前铺垫的字符。

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

qint64 QTextStream:: pos () const

返回对应流当前位置的设备位置,或 -1 若出现错误 (如:若没有设备/字符串,或若存在设备错误)。

因为 QTextStream 有缓冲,此函数可能必须寻址设备以重构有效设备位置。此操作会很昂贵,所以,可能想要避免在紧密循环中调用此函数。

该函数在 Qt 4.2 引入。

另请参阅 seek ().

QString QTextStream:: read ( qint64 maxlen )

读取最多 maxlen 字符从流,并返回读取数据按 QString .

该函数在 Qt 4.1 引入。

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

QString QTextStream:: readAll ()

读取流的整个内容,并返回它按 QString 。避免使用此函数,当操控大文件时。因为 , 它会消耗大量内存。

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

另请参阅 readLine ().

QString QTextStream:: readLine ( qint64 maxlen = 0)

从流读取 1 行文本,并返回它按 QString 。最大允许行长度被设为 maxlen 。若流包含的行长于这,则分割行后于 maxlen 字符并以部分形式返回。

maxlen 为 0,行可以是任意长度。

返回行没有结尾 (\n 或 \r\n) 行尾字符,所以调用 QString::trimmed () 可能不必要。

若流已读取到 EOF (文件末尾),readLine() 返回 null QString 。对于字符串 (或支持字符串的设备),可以明确测试流是否结束使用 atEnd ().

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

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

从流读取 1 行文本到 line 。若 line is nullptr ,不存储读取行。

最大允许行长度被设为 maxlen 。若流包含的行长于这,则分割行后于 maxlen 字符并以部分形式返回。

maxlen 为 0,行可以是任意长度。

结果行没有结尾 (\n 或 \r\n) 行尾字符,所以调用 QString::trimmed () 可能不必要。

line 有足够容量容纳即将读取的数据;此函数可能不需要分配新内存。因此,它可以更快相比 readLine ().

返回 false 如果流已读取到 EOF (文件末尾) 或出现错误;否则返回 true 。内容在 line 在调用前被丢弃,在任何情况下。

该函数在 Qt 5.5 引入。

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

QTextStream::RealNumberNotation QTextStream:: realNumberNotation () const

返回当前实数表示法。

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

int QTextStream:: realNumberPrecision () const

返回当前实数的精度,或数字的小数位数, QTextStream will write when generating real numbers.

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

void QTextStream:: reset ()

重置 QTextStream 的格式化选项,将之还原到其原始构造状态。设备、字符串及任何缓冲数据,保持不变。

void QTextStream:: resetStatus ()

重置文本流的状态。

该函数在 Qt 4.1 引入。

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

bool QTextStream:: seek ( qint64 pos )

寻址到位置 pos 在设备中。返回 true 当成功时;否则返回 false .

void QTextStream:: setAutoDetectUnicode ( bool enabled )

enabled 为 True, QTextStream 将试图通过窥视流数据以检测 Unicode 编码,看是否可以找到 UTF-8、UTF-16 或 UTF-32 BOM (字节序标记)。若有找到此标记, QTextStream will replace the current codec with the UTF codec.

此函数可以一起使用与 setCodec (). It is common to set the codec to UTF-8, and then enable UTF-16 detection.

另请参阅 autoDetectUnicode (), setCodec (),和 QTextCodec::codecForUtfText ().

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 运转于字符串,此函数什么都不做。

警告: 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 。若已经有赋值设备, QTextStream 将调用 flush () 在替换旧设备前。

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

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

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

把字段对齐方式设为 mode 。当一起用于 setFieldWidth (),此函数允许生成对齐到左、对齐到右、或居中对齐的格式化输出文本。

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

void QTextStream:: setFieldWidth ( int width )

把当前字段宽度设为 width 。若 width 为 0 (默认),字段宽度等于生成文本长度。

注意: 字段宽度适用于追加到此流的每个元素,在调用此函数后 (如:它还铺垫 endl)。此行为不同于 STL (标准模板库) 类似类,在 STL,字段宽度只适用于下一元素。

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

void QTextStream:: setGenerateByteOrderMark ( bool generate )

generate is true and a UTF codec is used, QTextStream 将插入 BOM (字节序标记) 在把任何数据写入设备前。若 generate 为 False,将不插入 BOM。必须在写入任何数据之前,调用此函数。否则,什么都不做。

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

void QTextStream:: setIntegerBase ( int base )

把整数的基设为 base ,用于读取和生成数字两者。 base 可以为 2 (二进制)、8 (八进制)、10 (十进制) 或 16 (十六进制)。若 base 为 0, QTextStream 将试图检测基通过审查流中的数据。当生成数字时, QTextStream 假定基为 10 除非有明确设置基。

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

void QTextStream:: setLocale (const QLocale & locale )

把用于此流的区域设置设为 locale 。指定的区域设置用于数字及其字符串表示形式之间的转换。

默认区域设置为 C 且是特殊情况 - 不使用千位组分隔符,出于向后兼容原因。

该函数在 Qt 4.5 引入。

另请参阅 locale ().

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

把当前数字标志设为 flags . flags 是一组标志来自 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 )

把铺垫字符设为 ch 。默认值为 ASCII 空格字符 ' ',或 QChar (0x20)。此字符用于填充字段中的空格,当生成文本时。

范例:

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

字符串 s 包含:

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

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

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

把实数表示法设为 notation ( SmartNotation , FixedNotation , ScientificNotation )。当读取并生成数字时, QTextStream 使用此值来检测实数的格式。

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

void QTextStream:: setRealNumberPrecision ( int precision )

把实数的精度设为 precision . This value describes the number of fraction digits QTextStream should write when generating real numbers.

精度不可以为负值。默认值为 6。

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

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

把文本流的状态设为 status 给定。

忽略后续 setStatus() 调用,直到 resetStatus () 被调用。

该函数在 Qt 4.1 引入。

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

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

将当前字符串设为 string ,使用给定 openMode 。若已经有赋值设备, QTextStream 将调用 flush () 在替换它前。

另请参阅 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.

空白字符是所有字符对于那些 QChar::isSpace () 返回 true .

另请参阅 operator>> ().

QTextStream::Status QTextStream:: status () const

返回文本流的状态。

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

QString *QTextStream:: string () const

返回的当前字符串被赋值给 QTextStream ,或 nullptr 若没有赋值字符串。

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

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

写入字符 c 到流,然后返回引用针对 QTextStream .

另请参阅 setFieldWidth ().

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

这是重载函数。

转换 c 从 ASCII 到 QChar ,然后将它写入流。

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

写入整数数字 i 到流,然后返回引用针对 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 )

这是重载函数。

写入无符号短整数 i 到流。

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

这是重载函数。

写入有符号整数 i 到流。

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

这是重载函数。

写入无符号整数 i 到流。

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

这是重载函数。

写入有符号 long i 到流。

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

这是重载函数。

写入无符号 long i 到流。

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

这是重载函数。

写入 qlonglong i 到流。

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

这是重载函数。

写入 qulonglong i 到流。

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

写入实数 f 到流,然后返回引用针对 QTextStream 。默认情况下, QTextStream 存储它使用 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 )

这是重载函数。

写入 double f 到流。

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

写入字符串 string 到流,并返回引用针对 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<< ( QStringView string )

这是重载函数。

写入 string 到流,并返回引用针对 QTextStream .

该函数在 Qt 5.12 引入。

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

这是重载函数。

写入 string 到流,并返回引用针对 QTextStream .

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

这是重载函数。

写入 string 到流,并返回引用针对 QTextStream .

该函数在 Qt 5.6 引入。

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

这是重载函数。

写入 array 到流。内容对于 array 的转换是采用 QString::fromUtf8 ().

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

这是重载函数。

写入常量字符串指向通过 string 到流。 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!" << Qt::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 到流以具有基的十六进制数形式。

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

从流读取字符并把它存储在 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;
					

空白 not 跳过。

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

这是重载函数。

从流读取字符并把它存储在 c . The character from the stream is converted to ISO-8859-1 before it is stored.

另请参阅 QChar::toLatin1 ().

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

读取整数从流并把它存储在 i ,然后返回引用针对 QTextStream 。把数字铸造成正确类型,在存储它之前。若在流中未检测到数字, i 被设为 0。

默认情况下, QTextStream 将试图使用下列规则以检测数字的基:

前缀
0b 或 0B 2 (二进制)
"0" followed by "0-7" 8 (八进制)
"0" otherwise 10 (十进制)
0x 或 0X 16 (十六进制)
1-9 10 (十进制)

通过调用 setIntegerBase (), you can specify the integer base explicitly. This will disable the auto-detection, and speed up QTextStream slightly.

跳过前导空白。

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

这是重载函数。

Stores the integer in the unsigned short i .

QTextStream &QTextStream:: operator>> ( 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>> ( 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 ,然后返回引用针对 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.

跳过前导空白。

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

这是重载函数。

把实数存储在 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 ).

跳过前导空白。

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.

若可能的话,使用 QByteArray 操作符代替。

相关非成员

QTextStreamManipulator qSetFieldWidth ( int width )

相当于 QTextStream::setFieldWidth ( width ).

QTextStreamManipulator qSetPadChar ( QChar ch )

相当于 QTextStream::setPadChar ( ch ).

QTextStreamManipulator qSetRealNumberPrecision ( int precision )

相当于 QTextStream::setRealNumberPrecision ( precision ).