我需要获取当前用户的主目录,然后将其他目录的路径附加到其中。由于该应用程序是跨平台的,因此该方法应考虑到这一点。我一直在寻找解决方案但没有成功。有没有办法使用 C++17 std::filesystem 获取当前用户的主目录?
没有。
您获得的唯一特殊目录是适合临时文件的目录和当前目录。
您必须编写一个特定于操作系统的包装器来获取主目录。 我个人认为这是一个坏主意:相反,您应该具有“用户应用程序设置”目录功能、“用户文档”目录功能等(根据您的应用程序需求确定)。 这些目录与主目录的比较因操作系统而异。
根据我的经验,拥有一个用于存储“类似注册表的属性集”的 API 是一个好主意(例如,在值上带有序列化代码的字符串到字符串映射)。 它可以映射到 macOS 上的 plist、Windows 上的注册表以及 Linux 上的其他内容。
简单:
#include <iostream>
#include <unistd.h>
int main() {
char *homeDir = getenv("HOME");
if (homeDir != nullptr) {
std::cout << "Home directory: " << homeDir << std::endl;
} else {
std::cerr << "Error getting home directory." << std::endl;
}
return 0;
}