QTextStream类参考
QTextStream类提供了使用QIODevice读写文本的基本功能。
详情请见……
#include <qtextstream.h>
由QTextIStream和QTextOStream继承。
所有成员函数的列表。
公有成员
详细描述
 QTextStream类提供了使用QIODevice读写文本的基本功能。
 
 文本流类的功能界面和标准的C++的iostream类非常相似。iostream和QTextStream的不同点是我们的流操作在一个很容易被继承的QIODevice上,而iostream只能操作一个不能被继承的FILE *指针。
 Qt提供了几个和iostream相似的全局函数:
-  bin设置QTextStream来读/写二进制数字
-  oct设置QTextStream来读/写八进制数字
-  dec设置QTextStream来读/写十进制数字
-  hex设置QTextStream来读/写十六进制数字
-  endl强制换行
-  flush强制QIODevice刷新任何被缓存的数据
-  ws作为任何可用的控制符(在输入的时候)
-  reset重新设置QTextStream为它的缺省模式(请见reset())
-  qSetW(int)设置字段宽度作为指定参数
-  qSetFill(int)设置填充字符作为指定参数
-  qSetPrecision(int)设置精确度作为指定参数
 警告:默认情况下,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::Locale
- QTextStream::Latin1
- QTextStream::Unicode
- QTextStream::UnicodeNetworkOrder
- QTextStream::UnicodeReverse
- QTextStream::RawUnicode
- QTextStream::UnicodeUTF8
 
成员函数文档
QTextStream::QTextStream ()
构造一个没有IO设备的文本流。
QTextStream::QTextStream ( QIODevice * iod )
构造一个使用iodIO设备的文本流。
QTextStream::QTextStream ( QString * str, int filemode )
构造一个通过内部设备操作UnicodeQString的str的文本流。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.cpp和grapher/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。
 标记的意义是:
-  skipws - 当前不被使用了,控制符总是被忽略
-  left - 数字字段左对齐
-  right - 当前不被使用了(默认情况下,数字字段是右对齐的)
-  internal - 在+/-和值的中间填充空格
-  bin - 输入和输出只使用二进制
-  oct - 输入和输出只使用八进制
-  dec - 输入和输出只使用十进制
-  hex - 输入和输出只使用十六进制
-  showbase - 如果使用bin、oct或hex格式,数字输出使用0b、0和0x注释
-  showpoint - 当前不被使用了
-  uppercase - 使用0B和0X,而不用0b和0x
-  showpos - 对正数显示+
-  scientific - 对浮点数使用科学记数法
-  fixed - 对浮点数使用固定的位数
 注意,如果没有设置bin、oct、dec或hex,那么一个以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()返回假的字符组成。
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
 从流中读取一个“词”str并且返回流的引用。对于所希望的输入格式的说明。
 一个词是由isspace()返回假的字符组成。
int QTextStream::precision () const
返回精确度。默认值为6。
int QTextStream::precision ( int p )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
 设置精确度为p。返回以前设置的精确度。
QString QTextStream::read ()
读取整个流并且返回包含文本的字符串。
 
也可以参考QIODevice::readLine().
实例:action/application.cpp、application/application.cpp、mdi/application.cpp、qdir/qdir.cpp和qwerty/qwerty.cpp。
QString QTextStream::readLine ()
读取流中的一行并且返回包含文本的字符串。
 返回的字符串不包含任何换行符和回车符。注意这是和QIODevice::readLine()不一样的,后者不会省略一行最后的换行符。
 在EOF处,你会得到一个零QString。在读取一个空行时你得到的QString是空的,但不是零。
 
也可以参考QIODevice::readLine()。
实例:addressbook/centralwidget.cpp和chart/element.cpp。
QTextStream & QTextStream::readRawBytes ( char * s, uint len )
从流中读取len字节放到s中并且返回流的引用。
 缓存s必须被预先分配。
 注意这个函数中不使用任何编码方式。
 警告:除非流的编码方式被设置为Unicode或者Latin1,这个函数的行为会是不确定的。
 
也可以参考QIODevice::readBlock()。
void QTextStream::reset ()
重新设置文本流为默认设置。
 
-  所有标记被设置为0。
-  所有字段宽度被设置为0。
-  所有填充字符被设置为“ ”(空格)。
-  精确度被设置为6。
 
也可以参考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 )
设置这个流的编码为e,e为下列之一:
-  Locale - 使用本地文件格式(如果本地没有设置,就是Latin1),但是会在输入时自动检测是否Unicode(utf16)。
-  Unicode - 使用Unicode(utf16)作为输入和输出。输出将会根据当前平台中最有效率的顺序写出来(比如,QString内部使用的顺序)。
-  UnicodeUTF8 - 使用Unicode(utf8)作为输入和输出。如果使用它作为输入,它将会自动检测是否utf16,如果是的话,将会使用它代替utf8。
-  Latin1 - ISO-8859-1。将不会自动检测utf16。
-  UnicodeNetworkOrder - 使用网络顺序的Unicode(utf16)作为输入和输出。当读取不使用字节顺序标记的Unicode的时候是有用的。
-  UnicodeReverse - 使用与网络顺序相反的顺序的Unicode(utf16)作为输入和输出。当读取不使用字节顺序标记或者当写供bug很多的Windows应用程序读取的数据的Unicode的时候是有用的。
-  RawUnicode - 就像Unicode,但是不写字节顺序标记,也不自动检测字节顺序标记。只有当写供一个单独进程使用的非永久保存的数据的时候是有用的。
 Locale和所有的Unicode编码,除了RawUnicode,都将看输入流的头两个字节来决定字节顺序。这个初始的字节顺序标记将会在读数据之前省略掉。
 注意这个函数的调用应该发生在这个流进行读/写数据之前。
 
也可以参考setCodec()。
实例:network/httpd/httpd.cpp和qwerty/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 )
从s写len字节到流中并且返回流的引用。
 注意这个函数没有使用任何编码。
 
也可以参考QIODevice::writeBlock()。
这个文件是Qt工具包一部分。
版权所有 © 1995-2002
Trolltech。保留所有权利。