QTextStream 类

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

头: #include <QTextStream>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
继承: QIODeviceBase

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

公共类型

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 , QIODeviceBase::OpenMode openMode = ReadWrite)
QTextStream (QString * string , QIODeviceBase::OpenMode openMode = ReadWrite)
QTextStream (QByteArray * array , 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<< (char c )
QTextStream & operator<< (char16_t 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<< (QLatin1StringView 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>> (char16_t & 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       "
}
					

使用 QTextStream 读取控制台输入,并写入控制台输出也很常见。QTextStream 感知区域设置,且会使用正确编码自动解码 stdin (标准输入)。范例:

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

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

在内部,QTextStream 使用 Unicode 基缓冲,和 QStringConverter 用于 QTextStream 以自动支持不同编码。默认情况下,UTF-8 用于读写,但也可以设置编码通过调用 setEncoding ()。自动 Unicode 检测也支持。当启用此特征 (默认行为) 时,QTextStream 将检测 UTF-8、UTF-16 或 UTF-32 BOM (字节序标记),并在读取时切换到适当 UTF 编码。默认情况下,QTextStream 不会写入 BOM,但可以启用这通过调用 setGenerateByteOrderMark (true)。当 QTextStream 运转于 QString 直接,禁用编码。

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

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

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

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

构造 QTextStream 运转于 device .

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

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

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

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

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

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

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

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

[explicit] QTextStream:: QTextStream (const QByteArray & array , QIODeviceBase::OpenMode openMode = 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 ()

销毁 QTextStream .

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

bool QTextStream:: atEnd () const

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

bool QTextStream:: autoDetectUnicode () const

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

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

QIODevice *QTextStream:: device () const

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

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

QStringConverter::Encoding QTextStream:: encoding () const

返回赋值给流的当前编码。

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

QTextStream::FieldAlignment QTextStream:: fieldAlignment () const

返回当前字段的对齐。

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

int QTextStream:: fieldWidth () const

返回当前字段的宽度。

另请参阅 setFieldWidth ().

void QTextStream:: flush ()

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

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

bool QTextStream:: generateByteOrderMark () const

返回 true if QTextStream 被设为生成 UTF BOM (字节序标记),当使用 UTF 编码时;否则返回 false 。默认情况下,UTF BOM (字节序标记) 生成被设为 false。

另请参阅 setGenerateByteOrderMark ().

int QTextStream:: integerBase () const

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

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

QLocale QTextStream:: locale () const

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

另请参阅 setLocale ().

QTextStream::NumberFlags QTextStream:: numberFlags () const

返回当前数字的标志。

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

QChar QTextStream:: padChar () const

返回当前铺垫的字符。

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

qint64 QTextStream:: pos () const

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

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

另请参阅 seek ().

QString QTextStream:: read ( qint64 maxlen )

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

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

QString QTextStream:: readAll ()

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

调用 readLine () 更好,若不知道有多少数据可用。

另请参阅 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 在调用前被丢弃,在任何情况下。

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

QTextStream::RealNumberNotation QTextStream:: realNumberNotation () const

返回当前实数表示法。

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

int QTextStream:: realNumberPrecision () const

返回当前实数的精度,或数字的小数位数, QTextStream 将写入当生成实数 ( FixedNotation , ScientificNotation ),或最大数字的有效位数 ( SmartNotation ).

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

void QTextStream:: reset ()

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

void QTextStream:: resetStatus ()

重置文本流的状态。

另请参阅 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 将以 UTF 编码替换当前编码。

此函数可以一起使用与 setEncoding ()。常见是把编码设为 UTF-8,然后启用 UTF-16 检测。

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

void QTextStream:: setDevice ( QIODevice * device )

把当前设备设为 device 。若已经有赋值设备, QTextStream 将调用 flush () 在替换旧设备前。

注意: 此函数把区域设置重置成 C 默认区域设置,并将编码重置成 UTF-8 默认编码。

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

void QTextStream:: setEncoding ( QStringConverter::Encoding encoding )

把用于此流的编码设为 encoding 。编码用于解码从赋值设备读取的任何数据,和用于编码要写入的任何数据。默认情况下, QStringConverter::Utf8 被使用,并启用自动 Unicode 检测。

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

警告: 若调用此函数 (当文本流正从打开的顺序套接字读取时),内部缓冲可能仍包含使用旧编码的解码文本。

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

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 为 true 并使用 UTF 编码, 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 且是特殊情况 - 不使用千位组分隔符,出于向后兼容原因。

另请参阅 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 ( FixedNotation , ScientificNotation ),或最大数字的有效位数 ( SmartNotation ).

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

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

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

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

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

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

void QTextStream:: setString ( QString * string , QIODeviceBase::OpenMode openMode = 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 ,然后将它写入流。

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

这是重载函数。

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

该函数在 Qt 6.3.1 引入。

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 encoding (the default is UTF-8) before it is written to the stream.

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

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

这是重载函数。

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

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

这是重载函数。

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

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

这是重载函数。

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

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

这是重载函数。

写入常量字符串指向通过 string 到流。 string is assumed to be in UTF-8 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-5589-1 before it is stored.

另请参阅 QChar::toLatin1 ().

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

这是重载函数。

从流读取字符并把它存储在 c .

该函数在 Qt 6.4 引入。

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 )

这是重载函数。

把单词转换成 UTF-8,然后把它存储在 array .

另请参阅 QString::toLatin1 ().

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

这是重载函数。

Converts the word to UTF-8 and stores it 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. For a word consisting of n QChars, the buffer needs to be at least 3*n+1 characters long.

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

相关非成员

QTextStreamManipulator qSetFieldWidth ( int width )

相当于 QTextStream::setFieldWidth ( width ).

QTextStreamManipulator qSetPadChar ( QChar ch )

相当于 QTextStream::setPadChar ( ch ).

QTextStreamManipulator qSetRealNumberPrecision ( int precision )

相当于 QTextStream::setRealNumberPrecision ( precision ).