主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QTextStream类参考

QTextStream类提供了使用QIODevice读写文本的基本功能。 详情请见……

#include <qtextstream.h>

QTextIStreamQTextOStream继承。

所有成员函数的列表。

公有成员


详细描述

QTextStream类提供了使用QIODevice读写文本的基本功能。

文本流类的功能界面和标准的C++的iostream类非常相似。iostream和QTextStream的不同点是我们的流操作在一个很容易被继承的QIODevice上,而iostream只能操作一个不能被继承的FILE *指针。

Qt提供了几个和iostream相似的全局函数:

警告:默认情况下,QTextStream在读取流的时候,会自动地检测流中的数字是十进制、八进制、十六进制或者二进制格式。具体情况是,一个以“0”为开头的数字是八进制的,比如顺序为“0100”将会被解释为64。

QTextStream类读写文本,它不适合处理二进制数据(而QDataStream是适合的)。

默认情况下,输出的是使用本地8位编码后的Unicode文本(比如,QString)。这些可以使用setEncoding()方法进行改变。对于输入,QTextStream会自动检测标准Unicode“字节顺序标记的”文本文件,否则会使用本地8位编码。

QIODevice在构造函数中被设置,或者之后在setDevice()中使用。如果输入到达了atEnd(),返回真。数据可以使用operator>>()重载操作符读到适当类型的变量中,或者使用read()把它作为整个部分读到一个单一的字符串中,或者使用readLine()把一次读一行。使用skipWhiteSpace()可以忽略控制符。你可以使用flags()或setf()来设置流的标记。这个流也支持width()、precision()和 fill(),使用reset()可以重新恢复默认设置。

也可以参考QDataStream输入/输出和网络文本相关类.


成员类型文档

QTextStream::Encoding


成员函数文档

QTextStream::QTextStream ()

构造一个没有IO设备的文本流。

QTextStream::QTextStream ( QIODevice * iod )

构造一个使用iodIO设备的文本流。

QTextStream::QTextStream ( QString * str, int filemode )

构造一个通过内部设备操作UnicodeQStringstr的文本流。filemode参数会被传递给设备的open()函数,请参考QIODevice::mode()。

如果你使用setEncoding()或setCodec()来设置一个编码或者编码器,当文本流在QString上操作时,这个设置将被忽略。

实例:

    QString str;
    QTextStream ts( &str, IO_WriteOnly );
    ts << "pi = " << 3.14; // str == "pi = 3.14"
  

写数据到文本流将会修改字符串的内容。如果所写的内容超过字符串的范围,字符串会被扩大。注意字符串不会被截短。

    QString str = "pi = 3.14";
    QTextStream ts( &str, IO_WriteOnly );
    ts <<  "2+2 = " << 2+2; // str == "2+2 = 414"
  

注意因为QString是Unicode的,你不应该在这样的流上使用readRawBytes()或writeRawBytes()。

QTextStream::QTextStream ( QString & str, int filemode )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

这个构造函数和使用一个QString*参数的构造函数一样。

QTextStream::QTextStream ( QByteArray a, int mode )

构造一个通过内部QBuffer设备操作字节数组a的文本流。filemode参数会被传递给设备的open()函数,请参考QIODevice::mode()。

实例:

    QByteArray array;
    QTextStream ts( array, IO_WriteOnly );
    ts << "pi = " << 3.14 << '\0'; // array == "pi = 3.14"
  

写数据到文本流将会修改数组的内容。如果所写的内容超过数组的范围,数组会被扩大。

同样的实例,使用QBuffer:

    QByteArray array;
    QBuffer buf( array );
    buf.open( IO_WriteOnly );
    QTextStream ts( &buf );
    ts << "pi = " << 3.14 << '\0'; // array == "pi = 3.14"
    buf.close();
  

QTextStream::QTextStream ( FILE * fh, int mode )

构造一个通过内部的QFile设备操作已经存在的文件句柄fh的文本流。filemode参数会被传递给设备的open()函数,请参考QIODevice::mode()。

注意如果你创建了一个QTextStreamcout或者也被其他类型的另一个变量使用的另一个名称,一些连接器也许会搞混这两个变量,这经常会导致程序崩溃。

QTextStream::~QTextStream () [虚]

销毁这个文本流。

这个析构函数对当前IO设备没有任何影响。

bool QTextStream::atEnd () const

如果IO设备已经达到终点(流或文件的终点),或者如果没有IO设备被设置,返回真,否则返回假。

也可以参考QIODevice::atEnd()。

实例:addressbook/centralwidget.cppgrapher/grapher.cpp

QIODevice * QTextStream::device () const

返回当前设置的IO设备。

也可以参考setDevice()和unsetDevice()。

bool QTextStream::eof () const

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

这个函数已经被重新命名为atEnd()。

也可以参考QIODevice::atEnd()。

实例:chart/chartform_files.cpp

int QTextStream::fill () const

返回填充字符。默认值是“ ”(空格)。

int QTextStream::fill ( int f )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

设置填充字符为f。返回以前的填充字符。

int QTextStream::flags () const

返回当前的流标记。默认值为0。

标记的意义是:

注意,如果没有设置binoctdechex,那么一个以0开始的值被认为是八进制的,以0x开始的被认为是十六进制的,以0b开始的被认为是二进制的,其它的都被认为是十进制的。

也可以参考setf()和unsetf()。

int QTextStream::flags ( int f )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

设置流标记为f。返回以前的流标记。

也可以参考setf()和unsetf()。

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

字符c到流中并且返回流的引用。

字符c不依赖于QTextStream的编码设置,被假设为Latin1编码。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

字符c到流中并且返回流的引用。

QTextStream & QTextStream::operator<< ( signed short i )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

短整型i到流中并且返回流的引用。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

无符号的短整型i到流中并且返回流的引用。

QTextStream & QTextStream::operator<< ( signed int i )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

有符号的整型i到流中并且返回流的引用。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

无符号的整型i到流中并且返回流的引用。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

有符号的长整型i到流中并且返回流的引用。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

无符号的长整型i到流中并且返回流的引用。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

单精实型f到流中并且返回流的引用。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

双精实型f到流中并且返回流的引用。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

写一个字符串到流中并且返回流的引用。

字符串s不依赖于QTextStream的编码设置,被假设为Latin1编码。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

写一个s到流中并且返回流的引用。

QTextStream & QTextStream::operator<< ( const QCString & s )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

写一个s到流中并且返回流的引用。

字符串s不依赖于QTextStream的编码设置,被假设为Latin1编码。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

写一个指针到流中并且返回流的引用。

ptr是被作为十六进制的无符号的长整型输出的。

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

从流中读取一个字符c并且返回流的引用。 注意控制符被忽略。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个字符c并且返回流的引用。

QTextStream & QTextStream::operator>> ( signed short & i )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个短整型i并且返回流的引用。对于所希望的输入格式的说明,请参考flags()。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个无符号的短整型i并且返回流的引用。对于所希望的输入格式的说明,请参考flags()。

QTextStream & QTextStream::operator>> ( signed int & i )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个有符号的整型i并且返回流的引用。对于所希望的输入格式的说明,请参考flags()。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个无符号的整型i并且返回流的引用。对于所希望的输入格式的说明,请参考flags()。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个有符号的长整型i并且返回流的引用。对于所希望的输入格式的说明,请参考flags()。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个无符号的长整型i并且返回流的引用。对于所希望的输入格式的说明,请参考flags()。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个单精实型f并且返回流的引用。对于所希望的输入格式的说明,请参考flags()。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个双精实型f并且返回流的引用。对于所希望的输入格式的说明,请参考flags()。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个“词”s并且返回流的引用。对于所希望的输入格式的说明。

一个词是由isspace()返回假的字符组成。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个“词”str并且返回流的引用。对于所希望的输入格式的说明。

一个词是由isspace()返回假的字符组成。

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

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

从流中读取一个“词”str并且返回流的引用。对于所希望的输入格式的说明。

一个词是由isspace()返回假的字符组成。

int QTextStream::precision () const

返回精确度。默认值为6。

int QTextStream::precision ( int p )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

设置精确度为p。返回以前设置的精确度。

QString QTextStream::read ()

读取整个流并且返回包含文本的字符串。

也可以参考QIODevice::readLine().

实例:action/application.cppapplication/application.cppmdi/application.cppqdir/qdir.cppqwerty/qwerty.cpp

QString QTextStream::readLine ()

读取流中的一行并且返回包含文本的字符串。

返回的字符串不包含任何换行符和回车符。注意这是和QIODevice::readLine()不一样的,后者不会省略一行最后的换行符。

在EOF处,你会得到一个零QString。在读取一个空行时你得到的QString是空的,但不是零。

也可以参考QIODevice::readLine()。

实例:addressbook/centralwidget.cppchart/element.cpp

QTextStream & QTextStream::readRawBytes ( char * s, uint len )

从流中读取len字节放到s中并且返回流的引用。

缓存s必须被预先分配。

注意这个函数中不使用任何编码方式。

警告:除非流的编码方式被设置为Unicode或者Latin1,这个函数的行为会是不确定的。

也可以参考QIODevice::readBlock()。

void QTextStream::reset ()

重新设置文本流为默认设置。

也可以参考setf()、width()、fill()和precision()。

void QTextStream::setCodec ( QTextCodec * codec )

设置流的编码器为codec。如果不设置,会自动设置为Unicode。

注意这个函数的调用应该发生在这个流进行读/写数据之前。

也可以参考setEncoding()。

实例:qwerty/qwerty.cpp

void QTextStream::setDevice ( QIODevice * iod )

设置IO设备为iod

也可以参考device()和unsetDevice()。

void QTextStream::setEncoding ( Encoding e )

设置这个流的编码为ee为下列之一:

Locale和所有的Unicode编码,除了RawUnicode,都将看输入流的头两个字节来决定字节顺序。这个初始的字节顺序标记将会在读数据之前省略掉。

注意这个函数的调用应该发生在这个流进行读/写数据之前。

也可以参考setCodec()。

实例:network/httpd/httpd.cppqwerty/qwerty.cpp

int QTextStream::setf ( int bits )

设置流的标记位为bits。返回以前设置的流标记。

flags( flags() | bits )是一样的。

也可以参考unsetf()。

int QTextStream::setf ( int bits, int mask )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。 设置流的标记位为bits和一个位掩码mask。返回以前设置的流标记。

flags( (flags() & ~mask) | (bits & mask) )是一样的。

也可以参考unsetf()。

void QTextStream::skipWhiteSpace ()

放置读指针在第一个非控制字符上。

void QTextStream::unsetDevice ()

清除IO设备。这个和调用setDevice( 0 )一样。

也可以参考device()和setDevice()。

int QTextStream::unsetf ( int bits )

清空流标记位bits。返回以前设置的流标记。

flags( flags() & ~mask )是一样的。

也可以参考setf()。

int QTextStream::width () const

返回字段宽度。默认值为0。

int QTextStream::width ( int w )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

设置字段宽度为w。返回以前设置的字段宽度。

QTextStream & QTextStream::writeRawBytes ( const char * s, uint len )

slen字节到流中并且返回流的引用。

注意这个函数没有使用任何编码。

也可以参考QIODevice::writeBlock()。


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。


Copyright © 2002 Trolltech Trademarks 译者:Cavendish
Qt 3.0.5版