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

6

我需要获取当前用户的主目录,并在此基础上添加其他目录的路径。由于应用程序是跨平台的,所以方法应该考虑到这一点。我一直在寻找解决方案,但没有成功。是否有一种方法可以使用C++17 std::filesystem获取当前用户的主目录?


1
@user975989 这个不起作用。 - Amani
1
你需要多少个跨平台?在Darwin/bsd和Linux上可以使用env{HOME},在Windows上可以使用env{HOMEDRIVE}\env{HOMEPATH}吗? - user6409506
1个回答

4

编号。

你手头唯一的特殊目录是适用于临时文件和当前目录的目录。

你需要编写一个特定于操作系统的包装器来获取主目录。我个人认为这是个不好的想法:相反,你应该拥有“用户应用程序设置”目录函数、“用户文档”目录函数等(根据你的应用程序需求确定)。这些目录与主目录的位置因操作系统而异。

在我的经验中,还有一个存储“类似注册表属性集”的API是个好主意(例如,具有值序列化代码的字符串-字符串映射)。它可以映射到macOS上的plists、Windows上的注册表以及Linux上的其他东西。


这并不是一个真正的答案。应该是“不,这是不可能的”。 - user6409506
2
@jennifer 我已经在句子、段落和单词层面上进行了解释。其余的是我试图通过心理学方法来确定 OP 即将犯下的错误并加以阻止。将固定目录附加到用户主目录中将会违反操作系统的规范,因为这些规范存在显著差异。 - Yakk - Adam Nevraumont
请注意,在Windows上,.ini格式同样适用。Qt的“QSettings”允许在两者之间进行选择。与您讨论的类似API是Qt的“QStandardPaths”。我并不主张像Qt这样的重量级库,而是指向一个现有的、可行的解决方案。 - jonspaceharper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接