如何使用 C++17 std::filesystem 获取用户的主目录?

问题描述 投票:0回答:2

我需要获取当前用户的主目录,然后将其他目录的路径附加到其中。由于该应用程序是跨平台的,因此该方法应考虑到这一点。我一直在寻找解决方案但没有成功。有没有办法使用 C++17 std::filesystem 获取当前用户的主目录?

c++ c++17
2个回答
5
投票

没有。

您获得的唯一特殊目录是适合临时文件的目录和当前目录。

您必须编写一个特定于操作系统的包装器来获取主目录。 我个人认为这是一个坏主意:相反,您应该具有“用户应用程序设置”目录功能、“用户文档”目录功能等(根据您的应用程序需求确定)。 这些目录与主目录的比较因操作系统而异。

根据我的经验,拥有一个用于存储“类似注册表的属性集”的 API 是一个好主意(例如,在值上带有序列化代码的字符串到字符串映射)。 它可以映射到 macOS 上的 plist、Windows 上的注册表以及 Linux 上的其他内容。


0
投票

简单:

#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;
}
© www.soinside.com 2019 - 2024. All rights reserved.