1

C++ アプリケーションの「設定」を保存しようとしています。

Windowsでは、「AppData」フォルダーを使用する必要があることはわかっていますが、LinuxとOsXには同等のものが必要です。

C++ でそのような情報を取得するためのライブラリまたはポータブルな方法はありますか?

現在使用しているコードは次のとおりです。

#ifdef VD_OS_WINDOWS
    LPWSTR wszPath = NULL;
    HRESULT hr = SHGetKnownFolderPath(FOLDERID_RoamingAppData, KF_FLAG_CREATE, NULL, &wszPath);

    _bstr_t bstrPath(wszPath);
    std::string strPath((char*)bstrPath);
    CoTaskMemFree(wszPath);

    return strPath;
#else
    char* path = getenv("XDG_CONFIG_HOME");
    if (!path)
        getenv("HOME") + ".local/share";

    return string(path);
#endif

ありがとう

4

2 に答える 2

2

たまたまQtアプリケーションを作成した場合、QSettings Class. ドキュメントには、このクラスについて次のように記載されています。

QSettings クラスは、プラットフォームに依存しない永続的なアプリケーション設定を提供します。

ユーザーは通常、アプリケーションがその設定 (ウィンドウのサイズと位置、オプションなど) をセッション間で記憶することを期待しています。この情報は、多くの場合、Windows ではシステム レジストリに保存され、Mac OS X では XML 設定ファイルに保存されます。Unix システムでは、標準がないため、多くのアプリケーション (KDE アプリケーションを含む) が INI テキスト ファイルを使用します。

これにより、最高の「すぐに使える」エクスペリエンスが得られます。そして、それは本当にプラットフォームに依存しません。

代替手段はboost::program_optionsまたはboost::property_treeです。しかし、これらのライブラリの目的はデータ処理であり、ストレージではありません。つまり、プラットフォームを検出し、データを正しい場所に保存する必要があります。

于 2015-11-30T19:43:37.457 に答える