【发布时间】:2019-10-15 06:40:49
【问题描述】:
Windows 有一个 Known Path 的概念,其中包含无需硬编码路径即可检索它们的函数:
#include <filesystem>
#include <windows.h>
#include <ShlObj.h>
//...
std::filesystem::path GetAppDataPath() {
namespace FS = std::filesystem;
PWSTR ppszPath = nullptr;
auto hr_path = ::SHGetKnownFolderPath(FOLDERID_RoamingAppData, KF_FLAG_DEFAULT, nullptr, &ppszPath);
bool success = SUCCEEDED(hr_path);
if (success) {
auto p = FS::path(ppszPath);
::CoTaskMemFree(ppszPath);
p = FS::canonical(p);
return p;
}
return {};
}
linux 有没有等价物?
【问题讨论】:
-
我不知道。 linux 文件系统通常遵循standard,但在某些发行版中可能会发生变化。
-
还有一些通常设置的标准环境变量,如
USER、HOME等。RoamingAppData 可能等同于"${HOME}/.config"或类似的东西
标签: c++ linux path c++17 known-folders