Шаг 90.
Библиотека Qt.
Класс QBuffer

    На этом шаге рассмотрим класс QBuffer.

    Класс QBuffer унаследован от класса QIODevice и представляет собой эмуляцию файлов в памяти компьютера (memory mapped files). Это позволяет записывать информацию в оперативную память и использовать объекты как обычные файлы (открывать при помощи метода open() и закрывать методом close()). При помощи методов write() и read() можно считывать и записывать блоки данных, например:

//установим код IBM 866 для вывода русских символов
QTextCodec *utfcodec = QTextCodec::codecForName("IBM 866");
QTextCodec::setCodecForLocale(utfcodec);
QByteArray arr;
QString str;
//данные сохраняются внутри объекта класса QByteArray
QBuffer buffer(&arr);
//открываем для записи
buffer.open(QIODevice::WriteOnly);
//записываем данные в buffer используя поток данных
QDataStream out(&buffer);
out << QString("Мама мыла раму!");
//закрываем buffer 
buffer.close();
//открываем для чтения
buffer.open(QIODevice::ReadOnly);
//читаем данные из buffer в QString
QDataStream in(&buffer);
in >> str;
//выводим строку на экран
qDebug() << str;

    Результат работы приложения можно увидеть на рисунке 1.


Рис.1. Пример работы с объектом класса QBuffer

    Файлы приложения можно взять здесь.

    При помощи метода buffer() можно получить константную ссылку на внутренний объект QByteArray, а посредством метода setBuffer() — устанавливать другой объект QByteArray для его использования в качестве внутреннего.

    Метод data() идентичен методу buffer(), но метод setData() отличается от setBuffer() тем, что получает не указатель на объект QByteArray, а константную ссылку на него для копирования его данных.

    Класс QBuffer полезен для проведения операций кэширования. Например, можно считывать файлы растровых изображений в объекты класса QBuffer, а затем, по необходимости, получать данные из них.

    На следующем шаге рассмотрим класс QTemporaryFile.




Предыдущий шаг Содержание Следующий шаг