亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qdatastream.cpp

?? QT 開發(fā)環(huán)境里面一個很重要的文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the QtCore module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "qdatastream.h"#ifndef QT_NO_DATASTREAM#include "qbuffer.h"#include "qstring.h"#include <stdio.h>#include <ctype.h>#include <stdlib.h>/*!    \class QDataStream    \reentrant    \brief The QDataStream class provides serialization of binary data    to a QIODevice.    \ingroup io    \mainclass    A data stream is a binary stream of encoded information which is    100% independent of the host computer's operating system, CPU or    byte order. For example, a data stream that is written by a PC    under Windows can be read by a Sun SPARC running Solaris.    You can also use a data stream to read/write \l{raw}{raw    unencoded binary data}. If you want a "parsing" input stream, see    QTextStream.    The QDataStream class implements the serialization of C++'s basic    data types, like \c char, \c short, \c int, \c{char *}, etc.    Serialization of more complex data is accomplished by breaking up    the data into primitive units.    A data stream cooperates closely with a QIODevice. A QIODevice    represents an input/output medium one can read data from and write    data to. The QFile class is an example of an I/O device.    Example (write binary data to a stream):    \code        QFile file("file.dat");        file.open(QIODevice::WriteOnly);        QDataStream out(&file);   // we will serialize the data into the file        out << "the answer is";   // serialize a string        out << (qint32)42;        // serialize an integer    \endcode    Example (read binary data from a stream):    \code        QFile file("file.dat");        file.open(QIODevice::ReadOnly);        QDataStream in(&file);    // read the data serialized from the file        QString str;        qint32 a;        in >> str >> a;           // extract "the answer is" and 42    \endcode    Each item written to the stream is written in a predefined binary    format that varies depending on the item's type. Supported Qt    types include QBrush, QColor, QDateTime, QFont, QPixmap, QString,    QVariant and many others. For the complete list of all Qt types    supporting data streaming see the \l{Format of the QDataStream    operators}.    For integers it is best to always cast to a Qt integer type for    writing, and to read back into the same Qt integer type. This    ensures that you get integers of the size you want and insulates    you from compiler and platform differences.    To take one example, a \c{char *} string is written as a 32-bit    integer equal to the length of the string including the '\\0' byte,    followed by all the characters of the string including the    '\\0' byte. When reading a \c{char *} string, 4 bytes are read to    create the 32-bit length value, then that many characters for the    \c {char *} string including the '\\0' terminator are read.    The initial I/O device is usually set in the constructor, but can be    changed with setDevice(). If you've reached the end of the data    (or if there is no I/O device set) atEnd() will return true.    \section1 Versioning    QDataStream's binary format has evolved since Qt 1.0, and is    likely to continue evolving to reflect changes done in Qt. When    inputting or outputting complex types, it's very important to    make sure that the same version of the stream (version()) is used    for reading and writing. If you need both forward and backward    compatibility, you can hardcode the version number in the    application:    \code        stream.setVersion(QDataStream::Qt_4_0);    \endcode    If you are producing a new binary data format, such as a file    format for documents created by your application, you could use a    QDataStream to write the data in a portable format. Typically, you    would write a brief header containing a magic string and a version    number to give yourself room for future expansion. For example:    \code        QFile file("file.xxx");        file.open(QIODevice::WriteOnly);        QDataStream out(&file);        // Write a header with a "magic number" and a version        out << (quint32)0xA0B0C0D0;        out << (qint32)123;        out.setVersion(QDataStream::Qt_4_0);        // Write the data        out << lots_of_interesting_data;    \endcode    Then read it in with:    \code        QFile file("file.xxx");        file.open(QIODevice::ReadOnly);        QDataStream in(&file);        // Read and check the header        quint32 magic;        in >> magic;        if (magic != 0xA0B0C0D0)            return XXX_BAD_FILE_FORMAT;        // Read the version        qint32 version;        in >> version;        if (version < 100)            return XXX_BAD_FILE_TOO_OLD;        if (version > 123)            return XXX_BAD_FILE_TOO_NEW;        if (version <= 110)            in.setVersion(QDataStream::Qt_3_2);        else            in.setVersion(QDataStream::Qt_4_0);        // Read the data        in >> lots_of_interesting_data;        if (version >= 120)            in >> data_new_in_XXX_version_1_2;        in >> other_interesting_data;    \endcode    You can select which byte order to use when serializing data. The    default setting is big endian (MSB first). Changing it to little    endian breaks the portability (unless the reader also changes to    little endian). We recommend keeping this setting unless you have    special requirements.    \target raw    \section1 Reading and writing raw binary data    You may wish to read/write your own raw binary data to/from the    data stream directly. Data may be read from the stream into a    preallocated \c{char *} using readRawData(). Similarly data can be    written to the stream using writeRawData(). Note that any    encoding/decoding of the data must be done by you.    A similar pair of functions is readBytes() and writeBytes(). These    differ from their \e raw counterparts as follows: readBytes()    reads a quint32 which is taken to be the length of the data to be    read, then that number of bytes is read into the preallocated    \c{char *}; writeBytes() writes a quint32 containing the length of the    data, followed by the data. Note that any encoding/decoding of    the data (apart from the length quint32) must be done by you.    \sa QTextStream QVariant*//*!    \enum QDataStream::ByteOrder    The byte order used for reading/writing the data.    \value BigEndian Most significant byte first (the default)    \value LittleEndian Less significant byte first*//*!    \enum QDataStream::Status    This enum describes the current status of the data stream.    \value Ok               The data stream is operating normally.    \value ReadPastEnd      The data stream has read past the end of the                            data in the underlying device.    \value ReadCorruptData  The data stream has read corrupt data.*//*****************************************************************************  QDataStream member functions *****************************************************************************/#ifndef QT_NO_DEBUG#undef  CHECK_STREAM_PRECOND#define CHECK_STREAM_PRECOND(retVal) \    if (!dev) { \        qWarning("QDataStream: No device"); \        return retVal; \    }#else#define CHECK_STREAM_PRECOND(retVal)#endifenum {    DefaultStreamVersion = QDataStream::Qt_4_2};// ### 4.0: when streaming invalid QVariants, just the type should// be written, no "data" after it/*!    Constructs a data stream that has no I/O device.    \sa setDevice()*/QDataStream::QDataStream(){    dev = 0;    owndev = false;    byteorder = BigEndian;    ver = DefaultStreamVersion;    noswap = QSysInfo::ByteOrder == QSysInfo::BigEndian;    q_status = Ok;}/*!    Constructs a data stream that uses the I/O device \a d.    \warning If you use QSocket or QSocketDevice as the I/O device \a d    for reading data, you must make sure that enough data is available    on the socket for the operation to successfully proceed;    QDataStream does not have any means to handle or recover from    short-reads.    \sa setDevice(), device()*/QDataStream::QDataStream(QIODevice *d){    dev = d;                                // set device    owndev = false;    byteorder = BigEndian;                        // default byte order    ver = DefaultStreamVersion;    noswap = QSysInfo::ByteOrder == QSysInfo::BigEndian;    q_status = Ok;}#ifdef QT3_SUPPORT/*!    \fn QDataStream::QDataStream(QByteArray *array, int mode)    \compat    Constructs a data stream that operates on the given \a array. The    \a mode specifies how the byte array is to be used, and is    usually either QIODevice::ReadOnly or QIODevice::WriteOnly.*/QDataStream::QDataStream(QByteArray *a, int mode){    QBuffer *buf = new QBuffer(a);    buf->open(QIODevice::OpenMode(mode));    dev = buf;    owndev = true;    byteorder = BigEndian;    ver = DefaultStreamVersion;    noswap = QSysInfo::ByteOrder == QSysInfo::BigEndian;    q_status = Ok;}#endif/*!    \fn QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode mode)    Constructs a data stream that operates on a byte array, \a a. The    \a mode describes how the device is to be used.    Alternatively, you can use QDataStream(const QByteArray &) if you    just want to read from a byte array.    Since QByteArray is not a QIODevice subclass, internally a QBuffer    is created to wrap the byte array.*/QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode flags){    QBuffer *buf = new QBuffer(a);    buf->open(flags);    dev = buf;    owndev = true;    byteorder = BigEndian;    ver = DefaultStreamVersion;    noswap = QSysInfo::ByteOrder == QSysInfo::BigEndian;    q_status = Ok;}/*!    Constructs a read-only data stream that operates on byte array \a a.    Use QDataStream(QByteArray*, int) if you want to write to a byte    array.    Since QByteArray is not a QIODevice subclass, internally a QBuffer    is created to wrap the byte array.*/QDataStream::QDataStream(const QByteArray &a){    QBuffer *buf = new QBuffer;    buf->setData(a);    buf->open(QIODevice::ReadOnly);    dev = buf;    owndev = true;    byteorder = BigEndian;    ver = DefaultStreamVersion;    noswap = QSysInfo::ByteOrder == QSysInfo::BigEndian;    q_status = Ok;}/*!    Destroys the data stream.    The destructor will not affect the current I/O device, unless it is    an internal I/O device (e.g. a QBuffer) processing a QByteArray    passed in the \e constructor, in which case the internal I/O device    is destroyed.*/QDataStream::~QDataStream(){    if (owndev)        delete dev;}/*!    \fn QIODevice *QDataStream::device() const    Returns the I/O device currently set.    \sa setDevice(), unsetDevice()*//*!    void QDataStream::setDevice(QIODevice *d)    Sets the I/O device to \a d.    \sa device(), unsetDevice()*/void QDataStream::setDevice(QIODevice *d){    if (owndev) {        delete dev;        owndev = false;    }    dev = d;}/*!    Unsets the I/O device. This is the same as calling setDevice(0).    \sa device(), setDevice()*/void QDataStream::unsetDevice(){    setDevice(0);}/*!    \fn bool QDataStream::atEnd() const    Returns true if the I/O device has reached the end position (end of    the stream or file) or if there is no I/O device set; otherwise    returns false.    \sa QIODevice::atEnd()*/bool QDataStream::atEnd() const{    return dev ? dev->atEnd() : true;}/*!    Returns the status of the data stream.    \sa Status setStatus() resetStatus()*/QDataStream::Status QDataStream::status() const{    return q_status;}/*!    Resets the status of the data stream.    \sa Status status() setStatus()*/void QDataStream::resetStatus(){    q_status = Ok;}/*!    Sets the status of the data stream to the \a status given.    \sa Status status() resetStatus()*/void QDataStream::setStatus(Status status){    if (q_status == Ok)        q_status = status;}/*!\fn bool QDataStream::eof() const    Use atEnd() instead.*//*!    \fn int QDataStream::byteOrder() const    Returns the current byte order setting -- either BigEndian or    LittleEndian.    \sa setByteOrder()*//*!    Sets the serialization byte order to \a bo.    The \a bo parameter can be QDataStream::BigEndian or    QDataStream::LittleEndian.    The default setting is big endian. We recommend leaving this    setting unless you have special requirements.    \sa byteOrder()*/void QDataStream::setByteOrder(ByteOrder bo){    byteorder = bo;    if (QSysInfo::ByteOrder == QSysInfo::BigEndian)        noswap = (byteorder == BigEndian);    else        noswap = (byteorder == LittleEndian);}/*!    \fn bool QDataStream::isPrintableData() const    In Qt 4, this function always returns false.    \sa setPrintableData()*//*!    \fn void QDataStream::setPrintableData(bool enable)    In Qt 3, this function enabled output in a human-readable    format if \a enable was false.    In Qt 4, QDataStream no longer provides a human-readable output.    This function does nothing.*//*!    \enum QDataStream::Version    This enum provides symbolic synonyms for the data serialization    format version numbers.    \value Qt_1_0 Version 1 (Qt 1.x)    \value Qt_2_0 Version 2 (Qt 2.0)    \value Qt_2_1 Version 3 (Qt 2.1, 2.2, 2.3)    \value Qt_3_0 Version 4 (Qt 3.0)    \value Qt_3_1 Version 5 (Qt 3.1, 3.2)    \value Qt_3_3 Version 6 (Qt 3.3)    \value Qt_4_0 Version 7 (Qt 4.0, Qt 4.1)    \value Qt_4_1 Version 7 (Qt 4.0, Qt 4.1)    \value Qt_4_2 Version 8 (Qt 4.2)    \sa setVersion(), version()*//*!    \fn int QDataStream::version() const    Returns the version number of the data serialization format.    \sa setVersion(), Version*//*!    \fn void QDataStream::setVersion(int v)    Sets the version number of the data serialization format to \a v.    You don't \e have to set a version if you are using the current    version of Qt, but for your own custom binary formats we    recommend that you do; see \l{Versioning} in the Detailed    Description.    In order to accommodate new functionality, the datastream    serialization format of some Qt classes has changed in some    versions of Qt. If you want to read data that was created by an    earlier version of Qt, or write data that can be read by a    program that was compiled with an earlier version of Qt, use this    function to modify the serialization format used by QDataStream.    \table    \header \i Qt Version       \i QDataStream Version    \row \i Qt 4.2              \i 8    \row \i Qt 4.0              \i 7    \row \i Qt 3.3              \i 6    \row \i Qt 3.1, 3.2         \i 5    \row \i Qt 3.0              \i 4    \row \i Qt 2.1, 2.2, 2.3    \i 3    \row \i Qt 2.0              \i 2    \row \i Qt 1.x              \i 1    \endtable    The \l Version enum provides symbolic constants for the different    versions of Qt. For example:    \code        QDataStream out(file);        out.setVersion(QDataStream::Qt_4_0);    \endcode    \sa version(), Version*//*****************************************************************************  QDataStream read functions *****************************************************************************//*!    \fn QDataStream &QDataStream::operator>>(quint8 &i)    \overload    Reads an unsigned byte from the stream into \a i, and returns a    reference to the stream.*//*!    Reads a signed byte from the stream into \a i, and returns a    reference to the stream.*/QDataStream &QDataStream::operator>>(qint8 &i){    i = 0;    CHECK_STREAM_PRECOND(*this)    char c;    if (!dev->getChar(&c))        setStatus(ReadPastEnd);    else        i = qint8(c);    return *this;}/*!    \fn QDataStream &QDataStream::operator>>(quint16 &i)    \overload

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美放荡的少妇| 99视频一区二区三区| 免费观看91视频大全| 经典三级视频一区| 成人免费视频caoporn| 91麻豆福利精品推荐| 欧美日韩国产首页在线观看| 日韩欧美自拍偷拍| 亚洲国产精品v| 夜夜操天天操亚洲| 久久精品国产精品亚洲综合| 国产成人精品亚洲日本在线桃色| 一本色道久久综合亚洲精品按摩| 8x8x8国产精品| 欧美国产日本韩| 极品美女销魂一区二区三区 | 日韩高清欧美激情| 韩国一区二区三区| 色一情一伦一子一伦一区| 久久久国产午夜精品| 亚洲一区二区视频在线| 国产一区二区三区黄视频 | 久久不见久久见中文字幕免费| 日本黄色一区二区| 精品日本一线二线三线不卡| 自拍偷拍亚洲综合| 美日韩一区二区| 91欧美激情一区二区三区成人| 久久精品无码一区二区三区| 亚欧色一区w666天堂| 粉嫩aⅴ一区二区三区四区五区| 欧美日韩免费视频| 中文字幕在线不卡一区二区三区| 麻豆国产欧美一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 国产另类ts人妖一区二区| 欧美亚洲综合另类| 欧美激情在线一区二区| 国产精品一级二级三级| 国产午夜精品在线观看| 国产精品一区二区果冻传媒| 久久久久久久久伊人| 国产精品亚洲午夜一区二区三区| 久久久久久久久伊人| 国产99精品视频| 国产精品国产三级国产三级人妇 | 亚洲欧美激情小说另类| 国产精品影视在线| 国产婷婷色一区二区三区四区| 国产精品小仙女| 中文字幕一区二区三区视频| 9l国产精品久久久久麻豆| 亚洲女爱视频在线| 精品视频999| 青青国产91久久久久久| 欧美xingq一区二区| 国产精品66部| 中文字幕中文字幕在线一区| 欧美中文字幕一区| 综合av第一页| 欧美视频在线一区| 日本女优在线视频一区二区| 久久中文娱乐网| 久久99精品久久久久久动态图 | 欧美日韩午夜精品| 奇米在线7777在线精品 | 欧美美女一区二区在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久亚洲一级片| 成人18精品视频| 国产精品美女久久福利网站| 国产精品综合一区二区三区| 亚洲欧洲精品天堂一级| 欧美午夜在线一二页| 男女视频一区二区| 国产精品情趣视频| 欧美日韩一级二级三级| 黑人巨大精品欧美一区| 国产精品久久影院| 91.com视频| 豆国产96在线|亚洲| 午夜欧美在线一二页| 欧美丰满少妇xxxbbb| 久久99久久久久久久久久久| 中文乱码免费一区二区| 欧美日韩国产一级| 懂色一区二区三区免费观看| 亚洲高清不卡在线观看| 欧美丝袜自拍制服另类| 狠狠色丁香婷综合久久| 亚洲欧洲成人精品av97| 欧美精品久久一区| 成人精品免费网站| 日韩在线卡一卡二| 日韩精品一区二| 国产成人综合在线| 亚洲综合在线第一页| 久久综合九色综合欧美98| 日本道免费精品一区二区三区| 久久66热偷产精品| 亚洲在线视频免费观看| 国产欧美日韩在线看| 成人一二三区视频| 三级在线观看一区二区| 国产精品福利一区二区三区| 91精品黄色片免费大全| 91免费在线看| 国产原创一区二区| 亚洲bt欧美bt精品| 亚洲欧美一区二区在线观看| 精品国产一区二区三区久久影院| 成人手机在线视频| 六月婷婷色综合| 亚洲综合无码一区二区| 国产精品麻豆欧美日韩ww| 精品久久人人做人人爰| 欧美老肥妇做.爰bbww| 成人黄页在线观看| 国产毛片精品视频| 日本成人在线视频网站| 亚洲综合丝袜美腿| 亚洲天堂中文字幕| 中文字幕av一区 二区| 精品福利av导航| 9191国产精品| 欧美亚洲国产bt| gogogo免费视频观看亚洲一| 国产一区二区三区最好精华液| 五月开心婷婷久久| 亚洲一卡二卡三卡四卡无卡久久| 国产精品久久久久久一区二区三区| 精品播放一区二区| 日韩一区二区电影网| 欧美日本韩国一区| 欧美亚洲一区二区在线| 色综合天天综合网天天狠天天| 日韩av一区二区在线影视| 亚洲国产一区在线观看| 一区二区三区自拍| 亚洲丝袜另类动漫二区| 综合在线观看色| 成人欧美一区二区三区1314| 欧美激情艳妇裸体舞| 久久精品人人爽人人爽| 欧美精品一区二区三区蜜臀| 日韩三级伦理片妻子的秘密按摩| 欧美美女直播网站| 欧美美女一区二区| 91精品麻豆日日躁夜夜躁| 91精品啪在线观看国产60岁| 91精品国模一区二区三区| 91精品国产免费久久综合| 色婷婷久久久亚洲一区二区三区| 不卡高清视频专区| 白白色 亚洲乱淫| jizz一区二区| 91丨九色丨尤物| 色综合天天综合色综合av| 91在线精品秘密一区二区| 精品一区二区综合| 国产一区二区三区精品欧美日韩一区二区三区| 日本欧美在线观看| 久久99国产精品久久99 | 一区二区三区精品| 一区二区三区高清在线| 一区二区三区免费观看| 香蕉加勒比综合久久| 午夜欧美大尺度福利影院在线看| 丝袜美腿亚洲综合| 美洲天堂一区二卡三卡四卡视频| 精品一区二区在线播放| 欧美久久久久久久久久| 91麻豆精品国产综合久久久久久| 91精品午夜视频| 久久久精品2019中文字幕之3| 国产精品天美传媒沈樵| 亚洲欧美一区二区三区孕妇| 亚洲夂夂婷婷色拍ww47| 日韩电影在线观看网站| 韩国一区二区在线观看| www..com久久爱| 欧美三级在线看| 欧美电影免费观看高清完整版在| 亚洲精品在线电影| 最新国产の精品合集bt伙计| 亚洲小说欧美激情另类| 精品系列免费在线观看| 国产suv精品一区二区883| 成人av第一页| 欧美精品少妇一区二区三区| 精品久久久久久久久久久久久久久久久 | 久久久久久9999| 中文字幕一区二区三区蜜月| 亚洲自拍偷拍图区| 国产最新精品免费| 91蜜桃视频在线| 日韩免费在线观看| 国产精品久久久久久久第一福利| 亚洲国产综合人成综合网站| 国产在线乱码一区二区三区|