QBuffer类

Qt 3.0.5

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

QBuffer类参考

QBuffer类是一个操作QByteArray的输入/输出设备。 详情请见……

#include <qbuffer.h>

继承了QIODevice

所有成员函数的列表。

公有成员


详细描述

QBuffer类是一个操作QByteArray的输入/输出设备。

QBuffer是用来读写内存缓存的。它通常与QTextStreamQDataStream一起使用。QBuffer有一个相关联的QByteArray用来存储缓冲数据。缓冲的大小(size())会根据所写的数据自动调整。

构造函数QBuffer(QByteArray)以一个现有的字节数组创建一个QBuffer。字节数组也可以由setBuffer()来设置。向QBuffer写将会更改初始字节数组,因为QByteArray是明确共享

在使用之前使用open()来打开缓存并且设置模式(只读、只写等等)。close()可以关闭缓存。在重新打开或者调用setBuffer()之前缓存必须被关闭。

使用QBuffer的一个普通方式是通过QDataStreamQTextStream,它们可以通过一个QBuffer参数来构造。为了方便,QDataStream和QTextStream也可以使用一个QByteArray参数来构造。这些构造函数创建并且打开一个内部的QBuffer。

注意QTextStream也可以操作QString(一个Unicode字符串),而QBuffer不能。

你也可以直接通过标准的QIODevice函数readBlock()、writeBlock()、readLine()、at(),、getch()、putch()和ungetch()来使用QBuffer。

也可以参考QFileQDataStreamQTextStreamQByteArray共享类集合类输入/输出和网络


成员函数文档

QBuffer::QBuffer ()

构造一个空的缓存。

QBuffer::QBuffer ( QByteArray buf )

操作buf来构造一个缓存。 如果你使用写模式(IO_WriteOnly或者IO_ReadWrite)打开缓存并且写一些东西到缓存,buf将被修改。

实例:

    QCString str = "abc";
    QBuffer b( str );
    b.open( IO_WriteOnly );
    b.at( 3 ); // 定位到第四个字符(终结符\0)
    b.writeBlock( "def", 4 ); // 写入“def”,包括终结符\0
    b.close();
    // 现在,str就是“abcdef”和一个终结符\0
  

也可以参考setBuffer()。

QBuffer::~QBuffer ()

析构缓存。

QByteArray QBuffer::buffer () const

返回这个缓存的字节数组。

也可以参考a href="#setBuffer">setBuffer()。

bool QBuffer::setBuffer ( QByteArray buf )

把缓存的内容替换为buf

isOpen()为真时,这个操作也许不能被完成。

注意如果你使用写模式(IO_WriteOnly或者IO_ReadWrite)打开缓存并且写一些东西到缓存,buf也会被修改因为QByteArray是一个明显共享类。

也可以参考buffer()、open()和close()。

Q_LONG QBuffer::writeBlock ( const char * p, Q_ULONG len ) [虚]

p中的len字节写到缓存的当前索引位置,如果需要的话,将会覆盖原有的数据并且扩充缓存。返回实际所写的字节数量。

如果发生任何错误,返回-1。

也可以参卡readBlock()。

Reimplemented from QIODevice.

Q_LONG QBuffer::writeBlock ( const QByteArray & data )

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

这个方便的函数使用data与调用writeBlock( data.data(), data.size() )是一样的。


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


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