QTextStream类
QTextStream类提供了一种方便的接口用于读写文本。 更多...
头文件 | #include <QTextStream> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承 | QIODeviceBase |
- 包括继承成员在内的所有成员列表
- QTextStream是输入/输出和网络以及字符串数据类的部分。"Input/Output and Networking"和"String Data Classes。"。
注意: 此类中所有函数均为重入的。
公共类型
枚举 | 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() |
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 | 实数表示() 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可以操作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有区域信息,并且将自动使用正确的编码解码标准输入。示例
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()来设置表示(SmartNotation,ScientificNotation,FixedNotation)和生成的数字的位数。通过setNumberFlags()还可以提供一些额外的数字格式化选项。
与标准C++库中的<iostream>
类似,QTextStream也定义了几个全局操纵函数
此外,Qt还提供了三个接受参数的全局操纵符:qSetFieldWidth(),qSetPadChar()和qSetRealNumberPrecision()。
另请参阅QDataStream,QIODevice,QFile,QBuffer和QTcpSocket。
成员类型文档
枚举QTextStream::FieldAlignment
此枚举指定在字段宽度大于占用其的文本时如何对齐字段中的文本。
常量 | 值 | 描述 |
---|---|---|
QTextStream::AlignLeft | 0 | 字段右侧填充。 |
QTextStream::AlignRight | 1 | 字段左侧填充。 |
QTextStream::AlignCenter | 2 | 字段两端填充。 |
QTextStream::AlignAccountingStyle | 3 | 与AlignRight相同,但数字的符号左对齐。 |
另请参阅setFieldAlignment()。
枚举QTextStream::NumberFlag
标志QTextStream::NumberFlags
此枚举指定可以设置以影响整数,浮点数和双精度浮点数输出的各种标志。
常量 | 值 | 描述 |
---|---|---|
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类型是QFlags<NumberFlag>的typedef。它存储NumberFlag值的或组合。
另请参阅setNumberFlags()。
枚举QTextStream::RealNumberNotation
此枚举指定用于将浮点数和双精度浮点数作为字符串表示的表示法。
常量 | 值 | 描述 |
---|---|---|
QTextStream::ScientificNotation | 2 | 科学表示法(printf() 's %e 标志)。 |
QTextStream::FixedNotation | 1 | 定点表示法(printf() 's %f 标志)。 |
QTextStream::SmartNotation | 0 | 科学或定点表示法,取决于哪一种更有意义(printf() 's %g 标志)。 |
另请参阅setRealNumberNotation()。
枚举QTextStream::Status
此枚举描述文本流的当前状态。
常量 | 值 | 描述 |
---|---|---|
QTextStream::Ok | 0 | 文本流正常运行。 |
QTextStream::ReadPastEnd | 1 | 文本流已读取底层设备中的数据末尾之后的数据。 |
QTextStream::ReadCorruptData | 2 | 文本流读取了损坏的数据。 |
QTextStream::WriteFailed | 3 | 文本流无法写入底层设备。 |
另请参阅 状态().
成员函数说明
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
。
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
如果 QTextStream 设置为在 UTF 编码时生成 UTF BOM(字节顺序标记),则返回 true
;否则返回 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)
从流中读取一行文本,并以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中。如果line是nullptr
,则读取的行不会被存储。
最大允许行长度设置为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将写入的小数位数(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将尝试通过查看流数据中是否存在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)。
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)
将当前数字标志设置为 flags。 flags 是来自 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 (SmartNotation、FixedNotation、ScientificNotation)。当读取和生成数字时,QTextStream 将使用此值来检测实数的格式。
另请参阅 realNumberNotation()、setRealNumberPrecision()、setNumberFlags() 和 setIntegerBase()。
void QTextStream::setRealNumberPrecision(int precision)
将实数的精度设置为 precision。此值描述了 QTextStream 在生成实数时应写入的小数位数 (FixedNotation、ScientificNotation),或最大有效数字数 (SmartNotation)。
精度不能为负值。默认值是 6。
另请参阅 realNumberPrecision() 和 setRealNumberNotation()。
void QTextStream::setStatus(QTextStream::Status status)
将文本流的设置状态更改为指定的 status。
在调用 resetStatus() 之前,后续对 setStatus() 的调用都被忽略。
另请参阅 Status、status() 和 resetStatus()。
void QTextStream::setString(QString *string, QIODeviceBase::OpenMode openMode = ReadWrite)
使用给定的 openMode 将当前字符串设置为 string。如果已分配了设备,则 QTextStream 将在替换之前调用 flush()。
void QTextStream::skipWhiteSpace()
从流中读取并丢弃空白字符,直到检测到非空格字符或者直到atEnd() 返回true。该函数在逐个读取流中的字符时非常有用。
空白字符是所有使QChar::isSpace() 返回 true
的字符。
另请参阅 operator>>()。
QTextStream::Status QTextStream::status() const
返回文本流的当前状态。
另请参阅 QTextStream::Status,setStatus(),和resetStatus()。
QString *QTextStream::string() const
返回分配给 QTextStream 的当前字符串,如果没有分配字符串则返回 nullptr
。
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 公司的 商标。所有其他商标均属于其各自的所有者。