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,一QByteArray或QString。使用QTextStream进行的流媒体运营商,你可以方便地读取和写入文字,线条和数字。对于生成文本, QTextStream进行支持领域填充和对齐和数字的格式格式化选项。例如:
[QFile]($docs-qfile.html) data("output.txt");
if (data.open([QFile]($docs-qfile.html).WriteOnly | [QFile]($docs-qfile.html).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]($docs-qstring.html) line;
do {
line = stream.readLine();
} 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( ) 。例如:
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进行还定义了几个全球机械手功能:
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
QTextStream.FieldAlignment
此枚举指定如何对齐文本字段中时,现场比它佔用的文字更广泛。
Constant | Value | Description |
---|---|---|
QTextStream.AlignLeft |
0 |
垫在右侧的字段。 |
QTextStream.AlignRight |
1 |
垫场的左侧。 |
QTextStream.AlignCenter |
2 |
焊盘上字段的两侧。 |
QTextStream.AlignAccountingStyle |
3 |
同AlignRight ,除了数字的标志是左对齐。 |
See also setFieldAlignment( ) 。
QTextStream.NumberFlag
该枚举指定可以设置为影响整数的输出各种标志,float
s和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( ) 。
QTextStream.RealNumberNotation
这个枚举指定用于表达的符号float
和double
为字符串。
Constant | Value | Description |
---|---|---|
QTextStream.ScientificNotation |
2 |
科学记数法(printf() 的%e 标志) 。 |
QTextStream.FixedNotation |
1 |
定点表示法(printf() 的%f 标志) 。 |
QTextStream.SmartNotation |
0 |
科学或定点表示法,这取决于哪个最有意义(printf() 的%g 标志) 。 |
See also setRealNumberNotation( ) 。
QTextStream.Status
这个枚举变量描述了文本流的当前状态。
Constant | Value | Description |
---|---|---|
QTextStream.Ok |
0 |
文本流运行正常。 |
QTextStream.ReadPastEnd |
1 |
文本流已经读取过的底层设备中的数据的结尾。 |
QTextStream.ReadCorruptData |
2 |
文本流已经阅读损坏的数据。 |
QTextStream.WriteFailed |
3 |
文本流不能写入到基础设备。 |
See also status( ) 。
Method Documentation
QTextStream.__init__ (self)
构造一个QTextStream。之前,你可以用它来读取或写入时,必须指定一个设备或一个字符串。
See also setDevice()和setString( ) 。
QTextStream.__init__ (self, QIODevice device)
构造一个QTextStream上操作device。
QTextStream.__init__ (self, QString string, QIODevice.OpenMode mode = QIODevice.ReadWrite)
构造一个QTextStream上操作fileHandle,使用openMode以限定开放模式。在内部,QFile创建处理文件指针。
这个构造函数是直接与普通基于文件的输入和输出流时非常有用:标准输入,标准输出和标准错误。例如:
[QString]($docs-qstring.html) str;
[QTextStream]($docs-qtextstream.html) in(stdin);
in >> str;
QTextStream.__init__ (self, QByteArray array, QIODevice.OpenMode mode = QIODevice.ReadWrite)
构造一个QTextStream上操作string,使用openMode以限定开放模式。
bool QTextStream.atEnd (self)
返回True ,如果没有更多的数据被从读QTextStream否则返回False 。这是类似的,但不一样的呼叫QIODevice.atEnd( ) ,如QTextStream也考虑到其内部的Unicode缓冲区。
bool QTextStream.autoDetectUnicode (self)
返回True如果启用了自动统一检测,否则返回False 。 Unicode的自动检测是默认启用的。
See also setAutoDetectUnicode()和setCodec( ) 。
QTextCodec QTextStream.codec (self)
[
返回是当前分配给该流的编解码器。
]($docs-qtextcodec.html)
See also setCodec( )setAutoDetectUnicode()和locale( ) 。
QIODevice QTextStream.device (self)
返回与关联的当前设备QTextStream,或者0,如果没有设备已经被分配。
See also setDevice()和string( ) 。
FieldAlignment QTextStream.fieldAlignment (self)
[
返回当前字段对齐。
]($docs-qtextstream.html#FieldAlignment-enum)
See also setFieldAlignment()和fieldWidth( ) 。
int QTextStream.fieldWidth (self)
返回当前字段宽度。
See also setFieldWidth( ) 。
QTextStream.flush (self)
刷新所有缓冲的数据等待被写入设备。
If QTextStream运行在一个字符串,这个函数不执行任何操作。
bool QTextStream.generateByteOrderMark (self)
返回True如果QTextStream设置使用UTF编码解码器时产生的UTF BOM(字节顺序标记),否则返回False 。 UTF BOM生成的默认设置为False 。
See also setGenerateByteOrderMark( ) 。
int QTextStream.integerBase (self)
返回整数的电流基础。 0表示当读出,或10 (十进制)生成数字时检测到的基极。
See also setIntegerBase( )QString.number()和numberFlags( ) 。
QLocale QTextStream.locale (self)
[
返回locale为这个流。默认的语言环境是C。
此功能被引入Qt的4.5 。
]($docs-qlocale.html)
NumberFlags QTextStream.numberFlags (self)
[
返回当前数字标志。
]($docs-index.htm)
See also setNumberFlags( )integerBase()和realNumberNotation( ) 。
QChar QTextStream.padChar (self)
返回当前的填充字符。
See also setPadChar()和setFieldWidth( ) 。
int QTextStream.pos (self)
返回对应于流的当前位置,设备位置,或-1,如果出现错误(例如,如果没有设备或字符串,或者如果有一个设备错误) 。
因为QTextStream缓冲,该功能可能会寻求设备重建一个有效的设备位置。此操作可以是昂贵的,所以你可能要避免调用在紧密循环此功能。
这个函数中引入了Qt 4.2中。
See also seek( ) 。
QString QTextStream.read (self, int maxlen)
阅读次数最多maxlen从流中的字符,并返回读取的数据QString。
这个函数是Qt 4.1中引入。
See also readAll( )readLine()和QIODevice.read( ) 。
QString QTextStream.readAll (self)
读取流的全部内容,并将其作为一个QString。对大型文件时,为了避免这个功能,因为它会消耗显着的内存量。
调用readLine( )是更好,如果你不知道有多少数据是可用的。
See also readLine( ) 。
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( ) 。
RealNumberNotation QTextStream.realNumberNotation (self)
[
返回当前的实数表示法。
]($docs-qtextstream.html#RealNumberNotation-enum)
See also setRealNumberNotation( )realNumberPrecision( )numberFlags()和integerBase( ) 。
int QTextStream.realNumberPrecision (self)
返回当前的实数精度或小数位数的数字QTextStream生成实数时会写。
See also setRealNumberPrecision( )setRealNumberNotation( )realNumberNotation( )numberFlags()和integerBase( ) 。
QTextStream.reset (self)
复位QTextStream的格式选项,把它恢复到原来的构造状态。该装置,字符串和任何缓冲的数据保持不变。
QTextStream.resetStatus (self)
重设文本流的状态。
这个函数是Qt 4.1中引入。
See also QTextStream.Status,status()和setStatus( ) 。
bool QTextStream.seek (self, int pos)
搜索到的位置pos在设备中。成功时返回TRUE ,否则返回False 。
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( ) 。
QTextStream.setCodec (self, QTextCodec codec)
设置编解码器,该流codec。编解码器,用于解码所读取的分配装置,和用于编码被写入任何数据的任何数据。默认情况下,QTextCodec.codecForLocale()被使用,并且被使能自动unicode的检测。
If QTextStream运行在一个字符串,这个函数不执行任何操作。
Warning:如果你调用这个函数而文本流从打开的顺序socket读取,内部缓冲区可能仍然包含使用旧文本的编解码器解码。
See also codec( )setAutoDetectUnicode()和setLocale( ) 。
QTextStream.setCodec (self, str codecName)
设置编解码器,该数据流的QTextCodec对于由指定的编码codecName。为共同的价值观codecName
包括“ ISO 8859 ”,“ UTF-8” ,和“UTF- 16” 。如果编码不被识别,没有任何反应。
例如:
[QTextStream]($docs-qtextstream.html) out(&file);
out.setCodec("UTF-8");
See also QTextCodec.codecForName()和setLocale( ) 。
QTextStream.setDevice (self, QIODevice device)
设置当前设备device。如果设备已经被分配,QTextStream将调用flush( )旧设备被替换之前。
Note:此功能将区域设置为默认语言环境(’ C’)和编解码器为默认的编解码器,QTextCodec.codecForLocale( ) 。
See also device()和setString( ) 。
QTextStream.setFieldAlignment (self, FieldAlignment alignment)
设置字段对齐到mode。当一起使用setFieldWidth( ) ,这个函数允许您生成格式化输出文本左对齐,对齐到右边或中间。
See also fieldAlignment()和setFieldWidth( ) 。
QTextStream.setFieldWidth (self, int width)
设置当前字段宽度为width。如果width为0 (默认值) ,字段宽度等于生成的文本的长度。
Note:字段宽度适用于这个函数被调用(例如,它也垫ENDL )后追加到该流的每一个元素。此行为是由相似的类在STL ,那里的字段宽度仅适用于下一个元素不同。
See also fieldWidth()和setPadChar( ) 。
QTextStream.setGenerateByteOrderMark (self, bool generate)
If generate是真实,一个UTF编码解码器时,QTextStream将插入BOM(字节顺序标记)之前的任何数据被写入到设备。如果generate是假的,没有BOM将被插入。任何数据写入之前,这个函数必须被调用。否则,它什么都不做。
See also generateByteOrderMark()和bom( ) 。
QTextStream.setIntegerBase (self, int base)
整数的基本设置为base,既用于读和用于产生数字。base可以是2 (二进制), 8 (八进制) , 10(十进制)或16(十六进制)。如果base为0时,QTextStream将试图通过检查流上的数据来检测的基础。当生成的数字,QTextStream假设基准是10 ,除非该基地已显式设置。
See also integerBase( )QString.number()和setNumberFlags( ) 。
QTextStream.setLocale (self, QLocale locale)
设置语言环境为这个流locale。指定的语言环境是用于数字和它们的字符串表示形式之间的转换。
默认区域设置为C ,它是一种特殊情况 - 在成千上万的组分隔符不能用于向后兼容的原因。
此功能被引入Qt的4.5 。
See also locale( ) 。
QTextStream.setNumberFlags (self, NumberFlags flags)
设置当前数字标志flags。flags是从一组标志NumberFlag枚举,并介绍了用于格式化生成的代码(例如,是否总是写一些基地或符号)选项。
See also numberFlags( )setIntegerBase()和setRealNumberNotation( ) 。
QTextStream.setPadChar (self, QChar ch)
设置填充字符以ch。默认值是ASCII空格字符(’ ‘) ,或QChar( 0X20 ) 。此符号用于生成文本时填写的空间领域。
例如:
[QString]($docs-qstring.html) s;
[QTextStream]($docs-qtextstream.html) out(&s);
out.setFieldWidth(10);
out.setFieldAlignment([QTextStream]($docs-qtextstream.html).AlignCenter);
out.setPadChar('-');
out << "Qt" << "rocks!";
字符串s
包含:
----[Qt](qt.html)------rocks!--
See also padChar()和setFieldWidth( ) 。
QTextStream.setRealNumberNotation (self, RealNumberNotation notation)
设置实数表示法notation(SmartNotation,FixedNotation,ScientificNotation) 。当读取和生成数字,QTextStream使用这个值来检测实数的格式。
See also realNumberNotation( )setRealNumberPrecision( )setNumberFlags()和setIntegerBase( ) 。
QTextStream.setRealNumberPrecision (self, int precision)
设置实数的精度来precision。这个值描述的部分位数QTextStream生成实数时,应该写。
精度不能是负值。默认值是6 。
See also realNumberPrecision()和setRealNumberNotation( ) 。
QTextStream.setStatus (self, Status status)
设置文本流的状态的status给出。
后续调用setStatus ()被忽略,直到resetStatus()被调用。
这个函数是Qt 4.1中引入。
See also Status,status()和resetStatus( ) 。
QTextStream.setString (self, QString string, QIODevice.OpenMode mode = QIODevice.ReadWrite)
设置当前字符串string,使用给定的openMode。如果设备已经被分配,QTextStream将调用flush( )替换它。
See also string()和setDevice( ) 。
QTextStream.skipWhiteSpace (self)
读取并丢弃空白从流,直到一个非空格字符被检测到,或直到atEnd( )返回True 。按字符读取字符流时,此功能非常有用。
空白字符都是字符的QChar.isSpace( )返回True 。
See also operator>>( ) 。
Status QTextStream.status (self)
[
返回文本流的状态。
]($docs-qtextstream.html#Status-enum)
See also QTextStream.Status,setStatus()和resetStatus( ) 。
QString QTextStream.string (self)
返回分配给当前字符串QTextStream,或者0,如果没有字符串被分配。
See also setString()和device( ) 。
QTextStream __lshift__ (self, QDomNode)
[
如果QtXml模块导入此方法仅适用。
]($docs-qtextstream.html)
QTextStream __lshift__ (self, QSplitter)
[
如果QtGui模块导入此方法仅适用。
]($docs-qtextstream.html)
QTextStream __rshift__ (self, QSplitter)
[
如果QtGui模块导入此方法仅适用。
]($docs-qtextstream.html)
QTextStream QTextStream.__lshift__ (self, float f)
QTextStream QTextStream.__lshift__ (self, bool b)
QTextStream QTextStream.__lshift__ (self, int i)
QTextStream QTextStream.__lshift__ (self, int i)
QTextStream QTextStream.__lshift__ (self, int i)
QTextStream QTextStream.__lshift__ (self, QString s)
QTextStream QTextStream.__lshift__ (self, QByteArray array)
QTextStream QTextStream.__lshift__ (self, QTextStreamManipulator m)
QTextStream QTextStream.__rshift__ (self, QChar ch)
QTextStream QTextStream.__rshift__ (self, QString s)
QTextStream QTextStream.__rshift__ (self, QByteArray array)