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