gpt4 book ai didi

c++ - 适用于所有操作系统的 AppData/Similar : C++?

转载 作者:行者123 更新时间:2023-11-30 03:46:39 25 4
gpt4 key购买 nike

我希望为我的 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

谢谢

最佳答案

如果你碰巧写了一个Qt应用程序,有 QSettings 类。该文档对此类进行了如下说明:

The QSettings class provides persistent platform-independent application settings.

Users normally expect an application to remember its settings (window sizes and positions, options, etc.) across sessions. This information is often stored in the system registry on Windows, and in XML preferences files on Mac OS X. On Unix systems, in the absence of a standard, many applications (including the KDE applications) use INI text files.

恕我直言,这提供了最好的“开箱即用”体验。而且它确实与平台无关。

替代方法是 boost::program_optionsboost::property_tree。但是这些库的目的是数据处理,而不是存储。这意味着您仍然需要检测平台,并将数据存储在正确的位置。

关于c++ - 适用于所有操作系统的 AppData/Similar : C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34006205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com