Способы хранения данных в С++

166
24 июля 2019, 11:10

На каникулы задали лабораторную работу (сделать программу, которая будет хранить метаданные файла, и текст содержащийся в нем, и различные функции для изменения данных), где одна из функций программ, это хранение данных, но обычное сохранение данных в txt файле не хочется делать. Как можно сохранять/хранить данные в другом формате?

Answer 1

Проще xml или json, как уже написали. Как вариант БД можно использовать sqlite. Очень проста в использовании и не требует дополнительной установки на компьютер. Достаточно положить sqlite-dll-win64-x64-3260000.zip библиотеки из архива рядом с базой. Удобный и бесплатный инструмент редактирования SQLiteManager.

Пример использования json могу дать такой(я использую Qt тут): сам json:

{
    "Format": [
        {
            "dateFormat": "MM.yyyy"
        },
        {
            "dateFormat": "yyyy.MM"
        },
        {
            "dateFormat": "dd.MM.yyyy"
        }
   ]
}

В функцию чтения передаётся путь до файла:

...
QFileInfo info(QDir::currentPath()+"formatDate.json");
ReadJSON(QFileInfo info)
...

Функция чтения :

   void MW::ReadJSON(QFileInfo info) {
         if (info.fileName()=="formatDate.json") {
            QString SettingsPath = info.absoluteFilePath();
            QFile loadFile(SettingsPath);
            if (!loadFile.open(QIODevice::ReadOnly)) {
                QMessageBox::critical(this, tr("Ошибка"), tr("Нельзя открыть файл!"));
                return;
            } else {
                QByteArray SettingsData = loadFile.readAll();
                QJsonDocument loadDoc(QJsonDocument::fromJson(SettingsData));
                QJsonArray jsonArray = loadDoc["Format"].toArray();            
                foreach (const QJsonValue & value, jsonArray) {
                    QJsonObject obj = value.toObject();
                    qDebug()<<obj["dateFormat"].toString();
                }
             }
          }
    }

Функция записи файла:

   void MW::SaveJSON() {
        QString PathToSettingsFiles = "formatDate.json";
        QFileInfo fi(QDir::currentPath(), PathToSettingsFiles);
        QFile JsonFile(fi.absoluteFilePath());
        JsonFile.open(QFile::WriteOnly);
        QJsonDocument JsonDoc;
        QJsonArray dateFormat_array;
        QString dateFormat_str("dateFormat");
        QStringList DateList = { "MM.yyyy", "yyyy.MM", "dd.MM.yyyy" };
        for (int x=0; x<DateList.size(); x++) {
            QJsonObject item_data;
            item_data.insert(dateFormat_str, QJsonValue(DateList.at(x)));
            dateFormat_array.push_back(QJsonValue(item_data));
        }
        QJsonObject final_object;
        final_object.insert(QString("Format"), QJsonValue(dateFormat_array));
        JsonDoc.setObject(final_object);
        JsonFile.write(JsonDoc.toJson());
        return;
    }
READ ALSO
Объявление двумерного вектора в шапке .h

Объявление двумерного вектора в шапке .h

когда перемещаю вh файл объявление вектора двумерного:

132
Ошибка при сборке драйвера MySql на Qt.

Ошибка при сборке драйвера MySql на Qt.

Все делаю по этой инструкции, но выходит ошибка qtsqldrivers-configpri: No such file or directoryЭтого файла у меня вообще нет на компьютере

154