Соединить имя файла и содержимое в QByteArray

253
15 декабря 2016, 16:08

Есть имя файла, переведенное в QByteArray.
Есть содержимое файла в QByteArray.

Как добавить имя файла, затем содержимое в единый QByteArray, чтобы их можно было потом распарсить?

Answer 1

Создание:

QByteArray create(const QByteArray &fname, const QByteArray &fdata) {
   QByteArray data;
   QBuffer buffer(&data);
   buffer.open(QIODevice::WriteOnly);
   QDataStream stream(&buffer);
   stream << fname << fdata;
   return data;
}

Парсинг:

void parse(QByteArray &data, QByteArray &fname, QByteArray &fdata) {
   QBuffer buffer(&data);
   buffer.open(QIODevice::ReadOnly);
   QDataStream stream(&buffer);
   stream >> fname >> fdata;
}

QDataStream внесёт в буфер два QByteArray раздельно. Можно без проблем сохранять одинаковые типы Qt-контейнеров, поскольку каждый так или иначе сохраняет свой собственный размер автоматом при сериализации.

Answer 2
QByteArray fileContent;
...
fileContent.prepend(fileName);
READ ALSO
По заданному числу N определить максимальную степень числа K, которая делит N! (нацело)

По заданному числу N определить максимальную степень числа K, которая делит N! (нацело)

Ограничение времени: 1 с Ограничение реального времени: 5 с Ограничение памяти: 64М

237
Повторное нажатие кнопки

Повторное нажатие кнопки

Всем доброго времени сутокМожет, кто сталкивался с подобной проблемой:

239
Очищает ли метод clear весь вектор, элементы которого имеют вектор стрингов?

Очищает ли метод clear весь вектор, элементы которого имеют вектор стрингов?

То есть, если vector<vector<string> > con; , то conclear(); очистит всё элементы и их векторы со строками или же будет утечка памяти?

231
Деление двух длинных чисел

Деление двух длинных чисел

Изначально было необходимо написать функцию, которая производит целочисленное деление двух длинных чисел аналогично бинарному поискуСами...

220