QTextStream Class Reference

[QtCore module]

该QTextStream进行类提供了一个方便的接口,用于读取和写入文字。More…

Types

  • enum FieldAlignment { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle }
  • enum NumberFlag { ShowBase, ForcePoint, ForceSign, UppercaseBase, UppercaseDigits }
  • class **[NumberFlags]($docs-index.htm)**
  • enum RealNumberNotation { SmartNotation, FixedNotation, ScientificNotation }
  • enum Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed }

Methods

  • __init__ (self)
  • __init__ (self, QIODevice device)
  • __init__ (self, QString string, QIODevice.OpenMode mode = QIODevice.ReadWrite)
  • __init__ (self, QByteArray array, QIODevice.OpenMode mode = QIODevice.ReadWrite)
  • bool atEnd (self)
  • bool autoDetectUnicode (self)
  • QTextCodec codec (self)
  • QIODevice device (self)
  • FieldAlignment fieldAlignment (self)
  • int fieldWidth (self)
  • flush (self)
  • bool generateByteOrderMark (self)
  • int integerBase (self)
  • QLocale locale (self)
  • NumberFlags numberFlags (self)
  • QChar padChar (self)
  • int pos (self)
  • QString read (self, int maxlen)
  • QString readAll (self)
  • QString readLine (self, int maxLength = 0)
  • RealNumberNotation realNumberNotation (self)
  • int realNumberPrecision (self)
  • reset (self)
  • resetStatus (self)
  • bool seek (self, int pos)
  • setAutoDetectUnicode (self, bool enabled)
  • setCodec (self, QTextCodec codec)
  • setCodec (self, str codecName)
  • setDevice (self, QIODevice device)
  • setFieldAlignment (self, FieldAlignment alignment)
  • setFieldWidth (self, int width)
  • setGenerateByteOrderMark (self, bool generate)
  • setIntegerBase (self, int base)
  • setLocale (self, QLocale locale)
  • setNumberFlags (self, NumberFlags flags)
  • setPadChar (self, QChar ch)
  • setRealNumberNotation (self, RealNumberNotation notation)
  • setRealNumberPrecision (self, int precision)
  • setStatus (self, Status status)
  • setString (self, QString string, QIODevice.OpenMode mode = QIODevice.ReadWrite)
  • skipWhiteSpace (self)
  • Status status (self)
  • QString string (self)

Special Methods

  • QTextStream __lshift__ (self, QDomNode)
  • QTextStream __lshift__ (self, QSplitter)
  • QTextStream __rshift__ (self, QSplitter)
  • QTextStream __lshift__ (self, float f)
  • QTextStream __lshift__ (self, bool b)
  • QTextStream __lshift__ (self, int i)
  • QTextStream __lshift__ (self, int i)
  • QTextStream __lshift__ (self, int i)
  • QTextStream __lshift__ (self, QString s)
  • QTextStream __lshift__ (self, QByteArray array)
  • QTextStream __lshift__ (self, QTextStreamManipulator m)
  • QTextStream __rshift__ (self, QChar ch)
  • QTextStream __rshift__ (self, QString s)
  • QTextStream __rshift__ (self, QByteArray array)

Detailed Description

该QTextStream进行类提供了一个方便的接口,用于读取和写入文字。

QTextStream进行可以在一个操作QIODevice,一QByteArrayQString。使用QTextStream进行的流媒体运营商,你可以方便地读取和写入文字,线条和数字。对于生成文本, QTextStream进行支持领域填充和对齐和数字的格式格式化选项。例如:

  1. [QFile]($docs-qfile.html) data("output.txt");
  2. if (data.open([QFile]($docs-qfile.html).WriteOnly | [QFile]($docs-qfile.html).Truncate)) {
  3. QTextStream out(&data);
  4. out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7;
  5. // writes "Result: 3.14 2.7 "
  6. }

这也是通常使用QTextStream来读取控制台输入,写控制台输出。 QTextStream进行的是语言环境感知,并使用正确的编解码器会自动解码标准输入。例如:

  1. QTextStream stream(stdin);
  2. [QString]($docs-qstring.html) line;
  3. do {
  4. line = stream.readLine();
  5. } while (!line.isNull());

除了使用QTextStream进行的构造函数,您还可以设置该设备或字符串QTextStream进行操作的调用setDevice()或setString( ) 。你可以通过调用争取到一个位置seek()和atEnd()返回真时,有没有的待读出的数据。如果你打电话flush( ) , QTextStream进行将清空其写入缓冲区中的所有数据到设备,并调用flush()在设备上。

在内部, QTextStream进行使用一个基于Unicode的缓冲区,QTextCodec是使用QTextStream来自动支持不同的字符集。默认情况下,QTextCodec.codecForLocale( )用于读取和写入,但你也可以通过调用设定的编解码器setCodec( ) 。也支持自动检测Unicode的。当此功能被启用(默认行为) , QTextStream进行将检测UTF- 16或UTF -32 BOM(字节顺序标记) ,在读取时切换到相应的UTF编码解码器。 QTextStream进行默认不写一个BOM ,但是你可以通过调用setGenerateByteOrderMark (真)启用此。当QTextStream进行运行在一个QString直接,编解码器被禁用。

有读取文本文件时使用QTextStream进行三种一般方法:

  • Chunk by chunk, by calling readLine() or readAll().
  • Word by word. QTextStream supports streaming into QStrings, QByteArrays 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().

由于文本流使用的缓冲区,你不应该使用一个超类的实现流中读取。举例来说,如果你有一个QFile并从中直接读取使用QFile.readLine代替)使用流( ,文本流的内部位置会出与该文件的位置同步。

默认情况下,从文本流中读取数字时, QTextStream进行会自动检测数字的基来表示。例如,如果该号码以“0x”启动时,它被假定为在十六进制形式。如果它与数字1-9启动时,它被假定为以十进制形式,等等。您可以设置整数基地,从而禁用自动检测,通过调用setIntegerBase( ) 。例如:

  1. QTextStream in("0x50 0x20");
  2. int firstNumber, secondNumber;
  3. in >> firstNumber; // firstNumber == 80
  4. in >> dec >> secondNumber; // secondNumber == 0
  5. char ch;
  6. in >> ch; // ch == 'x'

QTextStream进行支持,用于生成文本的许多格式选项。你可以通过调用设置字段宽度和填充字符setFieldWidth()和setPadChar( ) 。使用setFieldAlignment( )在每个字段内设置的对齐方式。对于实数,请致电setRealNumberNotation()和setRealNumberPrecision( )来设置符号(SmartNotationScientificNotationFixedNotation)和精度在生成的数字的位数。一些额外的数字格式选项也可通过setNumberFlags( ) 。

喜欢&lt;iostream&gt;在标准C + +库, QTextStream进行还定义了几个全球机械手功能:

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

此外, Qt提供了带一个参数三个全球机械手:qSetFieldWidth( )qSetPadChar()和qSetRealNumberPrecision( ) 。


Type Documentation

  1. QTextStream.FieldAlignment

此枚举指定如何对齐文本字段中时,现场比它佔用的文字更广泛。

Constant Value Description
QTextStream.AlignLeft 0 垫在右侧的字段。
QTextStream.AlignRight 1 垫场的左侧。
QTextStream.AlignCenter 2 焊盘上字段的两侧。
QTextStream.AlignAccountingStyle 3 同AlignRight ,除了数字的标志是左对齐。

See also setFieldAlignment( ) 。

  1. QTextStream.NumberFlag

该枚举指定可以设置为影响整数的输出各种标志,floats和double秒。

Constant Value Description
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\u003cNumberFlag\u003e 。它存储NumberFlag值的或组合。

See also setNumberFlags( ) 。

  1. QTextStream.RealNumberNotation

这个枚举指定用于表达的符号floatdouble为字符串。

Constant Value Description
QTextStream.ScientificNotation 2 科学记数法(printf()%e标志) 。
QTextStream.FixedNotation 1 定点表示法(printf()%f标志) 。
QTextStream.SmartNotation 0 科学或定点表示法,这取决于哪个最有意义(printf()%g标志) 。

See also setRealNumberNotation( ) 。

  1. QTextStream.Status

这个枚举变量描述了文本流的当前状态。

Constant Value Description
QTextStream.Ok 0 文本流运行正常。
QTextStream.ReadPastEnd 1 文本流已经读取过的底层设备中的数据的结尾。
QTextStream.ReadCorruptData 2 文本流已经阅读损坏的数据。
QTextStream.WriteFailed 3 文本流不能写入到基础设备。

See also status( ) 。


Method Documentation

  1. QTextStream.__init__ (self)

构造一个QTextStream。之前,你可以用它来读取或写入时,必须指定一个设备或一个字符串。

See also setDevice()和setString( ) 。

  1. QTextStream.__init__ (self, QIODevice device)

构造一个QTextStream上操作device

  1. QTextStream.__init__ (self, QString string, QIODevice.OpenMode mode = QIODevice.ReadWrite)

构造一个QTextStream上操作fileHandle,使用openMode以限定开放模式。在内部,QFile创建处理文件指针。

这个构造函数是直接与普通基于文件的输入和输出流时非常有用:标准输入,标准输出和标准错误。例如:

  1. [QString]($docs-qstring.html) str;
  2. [QTextStream]($docs-qtextstream.html) in(stdin);
  3. in >> str;
  1. QTextStream.__init__ (self, QByteArray array, QIODevice.OpenMode mode = QIODevice.ReadWrite)

构造一个QTextStream上操作string,使用openMode以限定开放模式。

  1. bool QTextStream.atEnd (self)

返回True ,如果没有更多的数据被从读QTextStream否则返回False 。这是类似的,但不一样的呼叫QIODevice.atEnd( ) ,如QTextStream也考虑到其内部的Unicode缓冲区。

  1. bool QTextStream.autoDetectUnicode (self)

返回True如果启用了自动统一检测,否则返回False 。 Unicode的自动检测是默认启用的。

See also setAutoDetectUnicode()和setCodec( ) 。

  1. QTextCodec QTextStream.codec (self)

[

返回是当前分配给该流的编解码器。

]($docs-qtextcodec.html)

See also setCodec( )setAutoDetectUnicode()和locale( ) 。

  1. QIODevice QTextStream.device (self)

返回与关联的当前设备QTextStream,或者0,如果没有设备已经被分配。

See also setDevice()和string( ) 。

  1. FieldAlignment QTextStream.fieldAlignment (self)

[

返回当前字段对齐。

]($docs-qtextstream.html#FieldAlignment-enum)

See also setFieldAlignment()和fieldWidth( ) 。

  1. int QTextStream.fieldWidth (self)

返回当前字段宽度。

See also setFieldWidth( ) 。

  1. QTextStream.flush (self)

刷新所有缓冲的数据等待被写入设备。

If QTextStream运行在一个字符串,这个函数不执行任何操作。

  1. bool QTextStream.generateByteOrderMark (self)

返回True如果QTextStream设置使用UTF编码解码器时产生的UTF BOM(字节顺序标记),否则返回False 。 UTF BOM生成的默认设置为False 。

See also setGenerateByteOrderMark( ) 。

  1. int QTextStream.integerBase (self)

返回整数的电流基础。 0表示当读出,或10 (十进制)生成数字时检测到的基极。

See also setIntegerBase( )QString.number()和numberFlags( ) 。

  1. QLocale QTextStream.locale (self)

[

返回locale为这个流。默认的语言环境是C。

此功能被引入Qt的4.5 。

]($docs-qlocale.html)

See also setLocale( ) 。

  1. NumberFlags QTextStream.numberFlags (self)

[

返回当前数字标志。

]($docs-index.htm)

See also setNumberFlags( )integerBase()和realNumberNotation( ) 。

  1. QChar QTextStream.padChar (self)

返回当前的填充字符。

See also setPadChar()和setFieldWidth( ) 。

  1. int QTextStream.pos (self)

返回对应于流的当前位置,设备位置,或-1,如果出现错误(例如,如果没有设备或字符串,或者如果有一个设备错误) 。

因为QTextStream缓冲,该功能可能会寻求设备重建一个有效的设备位置。此操作可以是昂贵的,所以你可能要避免调用在紧密循环此功能。

这个函数中引入了Qt 4.2中。

See also seek( ) 。

  1. QString QTextStream.read (self, int maxlen)

阅读次数最多maxlen从流中的字符,并返回读取的数据QString

这个函数是Qt 4.1中引入。

See also readAll( )readLine()和QIODevice.read( ) 。

  1. QString QTextStream.readAll (self)

读取流的全部内容,并将其作为一个QString。对大型文件时,为了避免这个功能,因为它会消耗显着的内存量。

调用readLine( )是更好,如果你不知道有多少数据是可用的。

See also readLine( ) 。

  1. QString QTextStream.readLine (self, int maxLength = 0)

读取一行从流文本,并将其作为一个QString。允许的最大行长度被设置为maxlen。如果流包含线比这更长的时间,那么行会被拆分后,maxlen字符和部件退回。

If maxlen为0时,线可以是任意长度的。为了一个共同的价值maxlen为75。

返回行有行尾没有尾随字符(“ \ n”或“ \ r \ N”的) ,因此调用QString.trimmed()是不必要的。

如果该流已读入到文件的末尾,的readLine ()将返回一个空QString。对于字符串,或者为支持它的设备,你可以明确地使用了流的末尾测试atEnd( ) 。

See also readAll()和QIODevice.readLine( ) 。

  1. RealNumberNotation QTextStream.realNumberNotation (self)

[

返回当前的实数表示法。

]($docs-qtextstream.html#RealNumberNotation-enum)

See also setRealNumberNotation( )realNumberPrecision( )numberFlags()和integerBase( ) 。

  1. int QTextStream.realNumberPrecision (self)

返回当前的实数精度或小数位数的数字QTextStream生成实数时会写。

See also setRealNumberPrecision( )setRealNumberNotation( )realNumberNotation( )numberFlags()和integerBase( ) 。

  1. QTextStream.reset (self)

复位QTextStream的格式选项,把它恢复到原来的构造状态。该装置,字符串和任何缓冲的数据保持不变。

  1. QTextStream.resetStatus (self)

重设文本流的状态。

这个函数是Qt 4.1中引入。

See also QTextStream.Statusstatus()和setStatus( ) 。

  1. bool QTextStream.seek (self, int pos)

搜索到的位置pos在设备中。成功时返回TRUE ,否则返回False 。

  1. QTextStream.setAutoDetectUnicode (self, bool enabled)

If enabled是真的,QTextStream将尝试检测Unicode编码通过窥视到的流数据,看看是否能找到的UTF -16或UTF- 32 BOM(字节顺序标记) 。如果发现该标志,QTextStream将与UTF编解码器替换当前的编解码器。

这个功能可以一起使用setCodec( ) 。这是常见的编解码器设置为UTF- 8 ,然后启用UTF-16的检测。

See also autoDetectUnicode()和setCodec( ) 。

  1. QTextStream.setCodec (self, QTextCodec codec)

设置编解码器,该流codec。编解码器,用于解码所读取的分配装置,和用于编码被写入任何数据的任何数据。默认情况下,QTextCodec.codecForLocale()被使用,并且被使能自动unicode的检测。

If QTextStream运行在一个字符串,这个函数不执行任何操作。

Warning:如果你调用这个函数而文本流从打开的顺序socket读取,内部缓冲区可能仍然包含使用旧文本的编解码器解码。

See also codec( )setAutoDetectUnicode()和setLocale( ) 。

  1. QTextStream.setCodec (self, str codecName)

设置编解码器,该数据流的QTextCodec对于由指定的编码codecName。为共同的价值观codecName包括“ ISO 8859 ”,“ UTF-8” ,和“UTF- 16” 。如果编码不被识别,没有任何反应。

例如:

  1. [QTextStream]($docs-qtextstream.html) out(&file);
  2. out.setCodec("UTF-8");

See also QTextCodec.codecForName()和setLocale( ) 。

  1. QTextStream.setDevice (self, QIODevice device)

设置当前设备device。如果设备已经被分配,QTextStream将调用flush( )旧设备被替换之前。

Note:此功能将区域设置为默认语言环境(’ C’)和编解码器为默认的编解码器,QTextCodec.codecForLocale( ) 。

See also device()和setString( ) 。

  1. QTextStream.setFieldAlignment (self, FieldAlignment alignment)

设置字段对齐到mode。当一起使用setFieldWidth( ) ,这个函数允许您生成格式化输出文本左对齐,对齐到右边或中间。

See also fieldAlignment()和setFieldWidth( ) 。

  1. QTextStream.setFieldWidth (self, int width)

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

Note:字段宽度适用于这个函数被调用(例如,它也垫ENDL )后追加到该流的每一个元素。此行为是由相似的类在STL ,那里的字段宽度仅适用于下一个元素不同。

See also fieldWidth()和setPadChar( ) 。

  1. QTextStream.setGenerateByteOrderMark (self, bool generate)

If generate是真实,一个UTF编码解码器时,QTextStream将插入BOM(字节顺序标记)之前的任何数据被写入到设备。如果generate是假的,没有BOM将被插入。任何数据写入之前,这个函数必须被调用。否则,它什么都不做。

See also generateByteOrderMark()和bom( ) 。

  1. QTextStream.setIntegerBase (self, int base)

整数的基本设置为base,既用于读和用于产生数字。base可以是2 (二进制), 8 (八进制) , 10(十进制)或16(十六进制)。如果base为0时,QTextStream将试图通过检查流上的数据来检测的基础。当生成的数字,QTextStream假设基准是10 ,除非该基地已显式设置。

See also integerBase( )QString.number()和setNumberFlags( ) 。

  1. QTextStream.setLocale (self, QLocale locale)

设置语言环境为这个流locale。指定的语言环境是用于数字和它们的字符串表示形式之间的转换。

默认区域设置为C ,它是一种特殊情况 - 在成千上万的组分隔符不能用于向后兼容的原因。

此功能被引入Qt的4.5 。

See also locale( ) 。

  1. QTextStream.setNumberFlags (self, NumberFlags flags)

设置当前数字标志flagsflags是从一组标志NumberFlag枚举,并介绍了用于格式化生成的代码(例如,是否总是写一些基地或符号)选项。

See also numberFlags( )setIntegerBase()和setRealNumberNotation( ) 。

  1. QTextStream.setPadChar (self, QChar ch)

设置填充字符以ch。默认值是ASCII空格字符(’ ‘) ,或QChar( 0X20 ) 。此符号用于生成文本时填写的空间领域。

例如:

  1. [QString]($docs-qstring.html) s;
  2. [QTextStream]($docs-qtextstream.html) out(&s);
  3. out.setFieldWidth(10);
  4. out.setFieldAlignment([QTextStream]($docs-qtextstream.html).AlignCenter);
  5. out.setPadChar('-');
  6. out << "Qt" << "rocks!";

字符串s包含:

  1. ----[Qt](qt.html)------rocks!--

See also padChar()和setFieldWidth( ) 。

  1. QTextStream.setRealNumberNotation (self, RealNumberNotation notation)

设置实数表示法notationSmartNotationFixedNotationScientificNotation) 。当读取和生成数字,QTextStream使用这个值来检测实数的格式。

See also realNumberNotation( )setRealNumberPrecision( )setNumberFlags()和setIntegerBase( ) 。

  1. QTextStream.setRealNumberPrecision (self, int precision)

设置实数的精度来precision。这个值描述的部分位数QTextStream生成实数时,应该写。

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

See also realNumberPrecision()和setRealNumberNotation( ) 。

  1. QTextStream.setStatus (self, Status status)

设置文本流的状态的status给出。

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

这个函数是Qt 4.1中引入。

See also Statusstatus()和resetStatus( ) 。

  1. QTextStream.setString (self, QString string, QIODevice.OpenMode mode = QIODevice.ReadWrite)

设置当前字符串string,使用给定的openMode。如果设备已经被分配,QTextStream将调用flush( )替换它。

See also string()和setDevice( ) 。

  1. QTextStream.skipWhiteSpace (self)

读取并丢弃空白从流,直到一个非空格字符被检测到,或直到atEnd( )返回True 。按字符读取字符流时,此功能非常有用。

空白字符都是字符的QChar.isSpace( )返回True 。

See also operator>>( ) 。

  1. Status QTextStream.status (self)

[

返回文本流的状态。

]($docs-qtextstream.html#Status-enum)

See also QTextStream.StatussetStatus()和resetStatus( ) 。

  1. QString QTextStream.string (self)

返回分配给当前字符串QTextStream,或者0,如果没有字符串被分配。

See also setString()和device( ) 。

  1. QTextStream __lshift__ (self, QDomNode)

[

如果QtXml模块导入此方法仅适用。

]($docs-qtextstream.html)

  1. QTextStream __lshift__ (self, QSplitter)

[

如果QtGui模块导入此方法仅适用。

]($docs-qtextstream.html)

  1. QTextStream __rshift__ (self, QSplitter)

[

如果QtGui模块导入此方法仅适用。

]($docs-qtextstream.html)

  1. QTextStream QTextStream.__lshift__ (self, float f)

  1. QTextStream QTextStream.__lshift__ (self, bool b)

  1. QTextStream QTextStream.__lshift__ (self, int i)

  1. QTextStream QTextStream.__lshift__ (self, int i)

  1. QTextStream QTextStream.__lshift__ (self, int i)

  1. QTextStream QTextStream.__lshift__ (self, QString s)

  1. QTextStream QTextStream.__lshift__ (self, QByteArray array)

  1. QTextStream QTextStream.__lshift__ (self, QTextStreamManipulator m)

  1. QTextStream QTextStream.__rshift__ (self, QChar ch)

  1. QTextStream QTextStream.__rshift__ (self, QString s)

  1. QTextStream QTextStream.__rshift__ (self, QByteArray array)