QTextStream类

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

头文件 #include <QTextStream>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
继承 QIODeviceBase

注意: 此类中所有函数均为重入的

公共类型

枚举FieldAlignment { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle }
枚举NumberFlag { ShowBase, ForcePoint, ForceSign, UppercaseBase, UppercaseDigits }
标志NumberFlags
枚举RealNumberNotation { ScientificNotation, FixedNotation, SmartNotation }
枚举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()
boolatEnd() const
boolautoDetectUnicode() const
QIODevice *device() const
QStringConverter::Encodingencoding() const
QTextStream::FieldAlignmentfieldAlignment() const
intfieldWidth() const
voidflush()
boolgenerateByteOrderMark() const
intintegerBase() const
QLocalelocale() const
QTextStream::NumberFlagsnumberFlags() const
QCharpadChar() const
qint64pos() const
QStringread(qint64 maxlen)
QStringreadAll()
QStringreadLine(qint64 maxlen = 0)
boolreadLineInto(QString *line, qint64 maxlen = 0)
QTextStream::RealNumberNotation实数表示() const
int实数精度() const
void重置()
void重置状态()
bool定位(qint64 pos)
void设置自动检测Unicode(bool enabled)
void设置设备(QIODevice *device)
void设置编码(QStringConverter::Encoding encoding)
void设置字段对齐方式(QTextStream::FieldAlignment mode)
void设置字段宽度(int width)
void设置生成字节顺序标记(bool generate)
void设置整数基数(int base)
void设置区域设置(const QLocale &locale)
void设置数字标志(QTextStream::NumberFlags flags)
void设置填充字符(QChar ch)
void设置实数表示(QTextStream::RealNumberNotation notation)
void设置实数精度(int precision)
void设置状态(QTextStream::Status status)
void设置字符串(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)
void跳过空白字符()
QTextStream::Status状态() const
QString *字符串() const
QTextStream &左移运算符(QChar c)
QTextStream &左移运算符(char c)
(自6.3.1以来) QTextStream &左移运算符(char16_t c)
QTextStream &左移运算符(short i)
QTextStream &左移运算符(unsigned short i)
QTextStream &左移运算符(int i)
QTextStream &左移运算符(unsigned int i)
QTextStream &左移运算符(long i)
QTextStream &左移运算符(unsigned long i)
QTextStream &左移运算符(qlonglong i)
QTextStream &左移运算符(qulonglong i)
QTextStream &左移运算符(float f)
QTextStream &左移运算符(double f)
QTextStream &左移运算符(const QString &string)
QTextStream &左移运算符(QStringView string)
QTextStream &左移运算符(QLatin1StringView string)
QTextStream &左移运算符(const QByteArray &array)
QTextStream &左移运算符(const char *string)
QTextStream &左移运算符(const void *ptr)
QTextStream &右移运算符(QChar &c)
QTextStream &右移运算符(char &c)
(自6.4以来) QTextStream &右移运算符(char16_t &c)
QTextStream &右移运算符(short &i)
QTextStream &右移运算符(unsigned short &i)
QTextStream &右移运算符(int &i)
QTextStream &右移运算符(unsigned int &i)
QTextStream &右移运算符(long &i)
QTextStream &右移运算符(unsigned long &i)
QTextStream &右移运算符(qlonglong &i)
QTextStream &右移运算符(qulonglong &i)
QTextStream &右移运算符(float &f)
QTextStream &operator>>(double &f)
QTextStream &operator>>(QString &str)
QTextStream &operator>>(QByteArray &array)
QTextStream &operator>>(char *c)
QTextStream操作器qSetFieldWidth(int width)
QTextStream操作器qSetPadChar(QChar ch)
QTextStream操作器qSetRealNumberPrecision(int precision)

详细描述

QTextStream可以操作QIODeviceQByteArrayQString。使用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有区域信息,并且将自动使用正确的编码解码标准输入。示例

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

除了使用QTextStream的构造函数外,您还可以通过调用setDevice()或setString()来设置QTextStream操作的设备或字符串。您可以调用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的一般方法:

  • 通过调用readLine()或readAll()逐块读取。
  • 逐字读取。QTextStream支持将流从中大米Stream、`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()来设置表示(SmartNotationScientificNotationFixedNotation)和生成的数字的位数。通过setNumberFlags()还可以提供一些额外的数字格式化选项。

与标准C++库中的<iostream>类似,QTextStream也定义了几个全局操纵函数

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

另请参阅QDataStreamQIODeviceQFileQBufferQTcpSocket

成员类型文档

枚举QTextStream::FieldAlignment

此枚举指定在字段宽度大于占用其的文本时如何对齐字段中的文本。

常量描述
QTextStream::AlignLeft0字段右侧填充。
QTextStream::AlignRight1字段左侧填充。
QTextStream::AlignCenter2字段两端填充。
QTextStream::AlignAccountingStyle3与AlignRight相同,但数字的符号左对齐。

另请参阅setFieldAlignment()。

枚举QTextStream::NumberFlag
标志QTextStream::NumberFlags

此枚举指定可以设置以影响整数,浮点数和双精度浮点数输出的各种标志。

常量描述
QTextStream::ShowBase0x1如果基数为16(“0x”),8(“0”)或2(“0b”),则显示基数为前缀。
QTextStream::ForcePoint0x2始终在数字中放置小数分隔符,即使没有小数。
QTextStream::ForceSign0x4始终在数字中放置符号,即使是正数。
QTextStream::UppercaseBase0x8使用大写版本的基数字符(“0X”,“0B”)。
QTextStream::UppercaseDigits0x10使用大写字母表示数字10到35,而不是小写字母。

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

另请参阅setNumberFlags()。

枚举QTextStream::RealNumberNotation

此枚举指定用于将浮点数和双精度浮点数作为字符串表示的表示法。

常量描述
QTextStream::ScientificNotation2科学表示法(printf()'s %e标志)。
QTextStream::FixedNotation1定点表示法(printf()'s %f标志)。
QTextStream::SmartNotation0科学或定点表示法,取决于哪一种更有意义(printf()'s %g标志)。

另请参阅setRealNumberNotation()。

枚举QTextStream::Status

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

常量描述
QTextStream::Ok0文本流正常运行。
QTextStream::ReadPastEnd1文本流已读取底层设备中的数据末尾之后的数据。
QTextStream::ReadCorruptData2文本流读取了损坏的数据。
QTextStream::WriteFailed3文本流无法写入底层设备。

另请参阅 状态().

成员函数说明

QTextStream::QTextStream()

构建一个QTextStream。在您可以使用它进行读写之前,必须分配一个设备或一个字符串。

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

[显式] QTextStream::QTextStream(QIODevice *device)

构建一个在< i translate="no">device上操作的QTextStream。

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

构建一个在 fileHandle 上操作的QTextStream,使用 openMode 定义打开模式。内部,创建一个 QFile 来处理 FILE 指针。

此构造函数对于直接与基于 FILE 的输入和输出流(如 stdin、stdout 和 stderr)工作很有用。示例

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

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

构建一个在 string 上操作的QTextStream,使用 openMode 定义打开模式。

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

构建一个在 array 上操作的QTextStream,使用 openMode 定义打开模式。内部,数组被 QBuffer 封装。

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

构建一个在 array 上操作的QTextStream,使用 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

如果没有更多数据可以从中读取 QTextStream,则返回 true;否则返回 false。这类似于调用 QIODevice::atEnd(),但 QTextStream 还考虑到其内部 Unicode 缓冲区。

bool QTextStream::autoDetectUnicode() const

如果启用了自动 Unicode 侦测,则返回 true,否则返回 false。自动 Unicode 侦测默认启用。

另请参阅 setAutoDetectUnicode() 和 setEncoding

QIODevice *QTextStream::device() const

返回与 QTextStream 关联的当前设备,如果尚未分配设备则返回 nullptr

另请参阅 setDevicestring

QStringConverter::Encoding QTextStream::encoding() const

返回流当前分配的编码。

另请参阅 setEncodingsetAutoDetectUnicodelocale

QTextStream::FieldAlignment QTextStream::fieldAlignment() const

返回当前字段对齐方式。

另请参阅 setFieldAlignmentfieldWidth

int QTextStream::fieldWidth() const

返回当前字段宽度。

另请参阅 setFieldWidth

void QTextStream::flush()

清除等待写入设备的任何缓冲数据。

如果 QTextStream 在字符串上操作,则此函数不执行任何操作。

bool QTextStream::generateByteOrderMark() const

如果 QTextStream 设置为在 UTF 编码时生成 UTF BOM(字节顺序标记),则返回 true;否则返回 false。UTF BOM 生成默认设置为 false。

另请参阅 setGenerateByteOrderMark

int QTextStream::integerBase() const

返回当前整数的基数。0 表示在读取时检测基数,或在生成数字时为 10(十进制)。

另请参阅 setIntegerBaseQString::numbernumberFlags

QLocale QTextStream::locale() const

返回此流的地点。默认地点为 C。

另请参阅 setLocale

QTextStream::NumberFlags QTextStream::numberFlags() const

返回当前数字标志。

另请参阅 setNumberFlagsintegerBaserealNumberNotation

QChar QTextStream::padChar() const

返回当前填充字符。

另请参阅 setPadCharsetFieldWidth

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)

从流中读取一行文本,并以QString的形式返回。最大允许行长度设置为maxlen。如果流中包含超过此长度的行,则行将在maxlen字符后分割并分部分返回。

如果maxlen为0,行可以有任何长度。

返回的行没有尾部的换行符("\n"或"\r\n"),因此调用QString::trimmed()可能是不必要的。

如果流的读取已到达文件末尾,readLine()将返回一个空的QString。对于字符串,或者对于支持该功能的设备,您可以使用atEnd()显式测试流的末尾。

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

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

从流中读取一行文本到line中。如果linenullptr,则读取的行不会被存储。

最大允许行长度设置为maxlen。如果流中包含超过此长度的行,则行将在maxlen字符后分割并分部分返回。

如果maxlen为0,行可以有任何长度。

生成的行没有尾部的换行符("\n"或"\r\n"),因此调用QString::trimmed()可能是不必要的。

如果line有足够的空间来存储即将读取的数据,则此函数可能不需要分配新的内存。由于这一点,它可能比readLine()更快。

如果流已读取到文件末尾或发生错误,则返回false;否则返回true。在任何情况下,调用之前line中的内容都将被丢弃。

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

QTextStream::RealNumberNotation QTextStream::realNumberNotation() const

返回当前的实数表示法。

另请参阅:setRealNumberNotation(),realNumberPrecision(),numberFlags(),以及integerBase

int QTextStream::realNumberPrecision() const

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

另请参阅:setRealNumberPrecision(),setRealNumberNotation(),realNumberNotation(),numberFlags(),以及integerBase

void QTextStream::reset()

重置QTextStream的格式化选项,恢复到其构造状态。设备和字符串以及任何缓存的都保持不变。

void QTextStream::resetStatus()

重置文本流的状。

另请参阅:QTextStream::Statusstatus(),以及setStatus

bool QTextStream::seek(qint64 pos)

移动到设备中的位置pos。成功时返回true;否则返回false

void QTextStream::setAutoDetectUnicode(bool enabled)

如果enabled为true,QTextStream将尝试通过查看流数据中是否存在UTF-8、UTF-16或UTF-32字节顺序标记(BOM)来检测Unicode编码。如果找到此标记,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)

设置此流的编码为编码。该编码用于解码从指定的设备读取的任何数据,以及用于编码任何写入的数据。默认情况下,使用QStringConverter::Utf8,并启用自动Unicode检测。

如果 QTextStream 在字符串上操作,则此函数不执行任何操作。

警告:如果您在文本流从打开的顺序套接字读取时调用此函数,内部缓冲区可能还包含使用旧编码解码的文本。

另请参阅:encoding(),setAutoDetectUnicode()和setLocale()。

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

将字段对齐设置为模式。当与setFieldWidth一起使用时,此函数允许您生成带文本的左侧、右侧或居中对齐的格式化输出。

另请参阅:fieldAlignment()和setFieldWidth()。

void QTextStream::setFieldWidth(int width)

将当前字段宽度设置为宽度。如果宽度为0(默认值),字段宽度等于生成的文本长度。

注意:字段宽度适用于此函数调用后附加到此流的每个元素(例如,它还会填充endl)。这种行为与STL中类似的类不同,其中字段宽度仅适用于下一个元素。

另请参阅:fieldWidth()和setPadChar()。

void QTextStream::setGenerateByteOrderMark(bool generate)

如果generate为true且使用UTF编码,QTextStream将在将数据写入设备之前插入BOM(字节顺序标记)。如果generate为false,则不会插入BOM。必须在这之前调用该函数;否则,不起作用。

另请参阅:generateByteOrderMark()和bom()。

void QTextStream::setIntegerBase(int base)

设置整数的基础为基础,既用于读取也用于生成数字。基础可以是2(二进制)、8(八进制)、10(十进制)或16(十六进制)。如果基础为0,QTextStream将尝试通过检查流上的数据来检测基础。在生成数字时,除非显式设置了基础,否则QTextStream假定基础为10。

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

void QTextStream::setLocale(const QLocale &locale)

将此流的区域设置设置为区域。指定的区域用于数字与它们的字符串表示之间的转换。

默认区域是C,这是一个特殊案例 - 为了向后相容的原因,不使用千位分隔符。

另请参阅:locale()。

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

将当前数字标志设置为 flagsflags 是来自 NumberFlag 枚举的标志集,用于描述生成代码的格式化选项(例如,是否始终写入数字的基数或符号)。

另请参阅 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 (SmartNotationFixedNotationScientificNotation)。当读取和生成数字时,QTextStream 将使用此值来检测实数的格式。

另请参阅 realNumberNotation()、setRealNumberPrecision()、setNumberFlags() 和 setIntegerBase()。

void QTextStream::setRealNumberPrecision(int precision)

将实数的精度设置为 precision。此值描述了 QTextStream 在生成实数时应写入的小数位数 (FixedNotationScientificNotation),或最大有效数字数 (SmartNotation)。

精度不能为负值。默认值是 6。

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

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

将文本流的设置状态更改为指定的 status

在调用 resetStatus() 之前,后续对 setStatus() 的调用都被忽略。

另请参阅 Statusstatus() 和 resetStatus()。

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

使用给定的 openMode 将当前字符串设置为 string。如果已分配了设备,则 QTextStream 将在替换之前调用 flush()。

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

void QTextStream::skipWhiteSpace()

从流中读取并丢弃空白字符,直到检测到非空格字符或者直到atEnd() 返回true。该函数在逐个读取流中的字符时非常有用。

空白字符是所有使QChar::isSpace() 返回 true 的字符。

另请参阅 operator>>()。

QTextStream::Status QTextStream::status() const

返回文本流的当前状态。

另请参阅 QTextStream::StatussetStatus(),和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 的引用。默认情况下,数字以十进制形式存储,但您也可以通过调用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)

这是一个重载函数。

将带符号的长整型 i 写入流。

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

这是一个重载函数。

将无符号长整型 i 写入流。

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

这是一个重载函数。

将 qlonglong i 写入流。

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

这是一个重载函数。

将 qulonglong i 写入流。

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

将实数 f 写入流,然后返回对 QTextStream 的引用。默认情况下,QTextStream 使用 SmartNotation 存储它,精度最高为 6 位数字。您可以通过调用 setRealNumberNotation(),setRealNumberPrecision() 和 setNumberFlags() 来更改 QTextStream 将用于实数的文本表示形式。

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

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

这是一个重载函数。

将双精度浮点数 f 写入流。

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

将字符串 string 写入流,并返回对 QTextStream 的引用。在将其写入流之前,字符串首先使用指定的编码(默认为 UTF-8)进行编码。

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

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

这是一个重载函数。

string 写入流,并返回对 QTextStream 的引用。

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

这是一个重载函数。

string 写入流,并返回对 QTextStream 的引用。

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

这是一个重载函数。

数组写入流。数组的内容使用QString::fromUtf8()进行转换。

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

这是一个重载函数。

将由string指向的常量字符串写入流。string假定使用了UTF-8编码。当处理常量字符串数据时,此运算符非常方便。示例

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

警告:QTextStream假定string指向一个以'\0'字符终止的文本字符串。如果没有终止的'\0'字符,则您的应用程序可能会崩溃。

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

这是一个重载函数。

ptr作为带基数的十六进制数写入流。

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

从流中读取一个字符并将其存储在c中。返回对QTextStream的引用,因此可以嵌套多个运算符。示例

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

空白字符不会跳过。

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

这是一个重载函数。

从流中读取一个字符并将其存储在c中。在存储前,从流中读取的字符转换为ISO-8859-1。

另请参阅QChar::toLatin1

[自 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"后跟"0-7"8(八进制)
"0"否则10(十进制)
"0x"或"0X"16(十六进制)
"1"到"9"10(十进制)

通过调用setIntegerBase(),您可以显式指定整数基数。这将禁用自动检测,并略微加快QTextStream的速度。

忽略前导空白。

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)

这是一个重载函数。

将整数存储在有符号长整型i中。

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

这是一个重载函数。

将整数存储在无符号长整型i中。

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

这是一个重载函数。

将整数存储在qlonglong i中。

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

这是一个重载函数。

将整数存储在qulonglong i中。

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

从流中读取一个实数并将其存储在f中,然后返回一个指向QTextStream的引用。数字将被转换为正确的类型。如果流中没有检测到实数,则f被设置为0.0。

作为一个特殊的异常,QTextStream允许用字符串"nan"和"inf"来表示NAN和INF的浮点数或双精度浮点数。

忽略前导空白。

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

这是一个重载函数。

将实数存储在双精度浮点型f中。

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

从流中读取一个单词并将其存储在str中,然后返回一个指向流的引用。单词由空白字符分隔(即,对于QChar::isSpace()返回true的所有字符)。

忽略前导空白。

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

这是一个重载函数。

将单词转换为UTF-8,然后存储在array中。

另请参阅 QString::toLatin1

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

这是一个重载函数。

将单词转换为UTF-8并存储在c中,由'\0'字符终止。如果没有单词可用,则只存储'\0'字符。

警告:虽然方便,但此运算符非常危险,必须谨慎使用。 QTextStream 假设 c 指向一个有足够空间存储单词的缓冲区。如果缓冲区太小,您的应用程序可能会崩溃。对于由 n 个 QChars 组成的单词,缓冲区至少需要 3*n+1 个字符。

如果可能,请使用 QByteArray 运算符。

相关非成员

QTextStreamManipulator qSetFieldWidth(int width)

等同于 QTextStream::setFieldWidth(width)。

QTextStreamManipulator qSetPadChar(QChar ch)

等同于 QTextStream::setPadChar(ch)。

QTextStreamManipulator qSetRealNumberPrecision(int precision)

等同于 QTextStream::setRealNumberPrecision(precision)。

© 2024 Qt 公司有限公司。此处包含的文档贡献的版权归各自所有者所有。此处提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 和相关标志是芬兰和/或其他国家/地区的 Qt 公司的 商标。所有其他商标均属于其各自的所有者。