Mac*_*cha 28 c++ cross-platform home-directory
如何在C++中以跨平台方式查找用户的主目录?即Linux中的/ home/user,Windows Vista上的C:\ Users\user \,Windows XP上的C:\ Documents And Settings\user \以及Mac使用的任何内容.(我认为是/用户/用户)
基本上,我正在寻找的是一种C++方式(在python中的例子)
os.path.expanduser("~")
Run Code Online (Sandbox Code Playgroud)
Mar*_*tos 27
我不认为用这个完全隐藏Windows/Unix的区别是可能的(除非Boost有一些东西).
最简便的方式必须是getenv("HOME")
在Unix和连接的结果getenv("HOMEDRIVE")
,并getenv("HOMEPATH")
在Windows上.
sor*_*rin 18
这是可能的,找到它的最好方法是研究源代码os.path.expanduser("~")
,很容易在C中复制相同的功能.
您必须添加一些#ifdef
指令来涵盖不同的系统.
以下是为您提供HOME目录的规则
USERPROFILE
或如果失败,请连接HOMEDRIVE
+HOMEPATH
HOME
或者如果失败,请使用getpwuid()
(示例代码)重要说明:很多人都认为HOME
环境变量在Unix上总是可用,但事实并非如此,一个很好的例子就是OS X.
在OS X上,当您从GUI(而不是控制台)运行应用程序时,这将不会设置此变量,因此您需要使用getpwuid().