MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtの基礎 - TOMLのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtの基礎 - TOML
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Qtには組み込みのTOMLパーサーが存在しないため、サードパーティ製ライブラリを使用する必要がある。<br> <br><br> == 同期処理 == ==== TOMLの読み込み ==== 以下の例では、toml++ライブラリを使用して、TOMLファイルを読み込んでいる。<br> toml++ライブラリを使用する場合は、プロジェクトにtoml++ライブラリをリンクする必要がある。<br> <br> <syntaxhighlight lang="c++"> #include <QFile> #include <QTextStream> #include <stdexcept> #include <toml++/toml.h> class TomlHandler { public: TomlHandler() = default; // TOMLファイルを読み込む toml::table readToml(const QString &filename) { try { return toml::parse_file(filename.toStdString()); } catch (const toml::parse_error &err) { throw std::runtime_error(QString("TOMLファイルの解析エラー: %1").arg(err.description().c_str()).toStdString()); } } // TOMLデータから特定の値を取得 (テンプレート関数) template<typename T> T getValue(const toml::table &data, const QString &key) { try { return data[key.toStdString()].value<T>(); } catch (const toml::type_error &err) { throw std::runtime_error(QString("値の取得エラー: %1").arg(err.what()).toStdString()); } } }; </syntaxhighlight> <br> 以下の例では、上記のクラスを使用してTOMLファイルを読み込んでいる。<br> <br> <syntaxhighlight lang="c++"> #include <QDebug> #include "TomlHandler.h" int main() { TomlHandler handler; try { // TOMLファイルを読み込む auto data = handler.readToml("config.toml"); // 値を取得する QString name = handler.getValue<QString>(data, "name"); int age = handler.getValue<int>(data, "age"); qDebug() << "Name:" << name; qDebug() << "Age:" << age; } catch (const std::exception &e) { qCritical() << "エラー: " << e.what(); return -1; } return 0; } </syntaxhighlight> <br> ==== TOMLファイルの書き込み ==== 以下の例では、toml++ライブラリを使用して、TOMLファイルを書き込んでいる。<br> toml++ライブラリを使用する場合は、プロジェクトにtoml++ライブラリをリンクする必要がある。<br> <br> <syntaxhighlight lang="c++"> #include <QFile> #include <QTextStream> #include <stdexcept> #include <toml++/toml.h> class TomlHandler { public: TomlHandler() = default; // TOMLファイルを読み込む toml::table readToml(const QString &filename) { try { return toml::parse_file(filename.toStdString()); } catch (const toml::parse_error &err) { throw std::runtime_error(QString("TOMLファイルの解析エラー: %1").arg(err.description().c_str()).toStdString()); } } // TOMLデータをファイルに書き込む void writeToml(const QString &filename, const toml::table &data) { QFile file(filename); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { throw std::runtime_error(QString("ファイルオープンエラー: %1").arg(filename).toStdString()); } QTextStream out(&file); out << QString::fromStdString(toml::toml_formatter(data).format()); file.close(); } // TOMLデータから特定の値を取得 (テンプレート関数) template<typename T> T getValue(const toml::table &data, const QString &key) { try { return data[key.toStdString()].value<T>(); } catch (const toml::type_error &err) { throw std::runtime_error(QString("値の取得エラー: %1").arg(err.what()).toStdString()); } } // TOMLデータに値を設定する (テンプレート関数) template<typename T> void setValue(toml::table &data, const QString &key, const T &value) { data[key.toStdString()] = value; } }; </syntaxhighlight> <br> 以下の例では、上記のクラスを使用してTOMLファイルを書き込んでいる。<br> <br> <syntaxhighlight lang="c++"> #include <QDebug> #include "TomlHandler.h" int main() { TomlHandler handler; try { // TOMLファイルを読み込む auto data = handler.readToml("config.toml"); // 値を取得 QString name = handler.getValue<QString>(data, "name"); int age = handler.getValue<int>(data, "age"); qDebug() << "Name:" << name; qDebug() << "Age:" << age; // 値を設定 handler.setValue(data, "location", "Tokyo"); // 変更したデータを書き込む handler.writeToml("config_updated.toml", data); } catch (const std::exception &e) { qCritical() << "エラー: " << e.what(); return -1; } return 0; } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Qt]]
Qtの基礎 - TOML
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse