C++ 在Qt中展开环境变量(与getenv等效)
我正在寻找函数的等价物。Qt在C++ 在Qt中展开环境变量(与getenv等效),c++,qt,environment-variables,C++,Qt,Environment Variables,我正在寻找函数的等价物。Qt在getenv()周围有一个包装器,名为 getenv()是一个标准函数,但Visual Studio不推荐使用它,这就是为什么Qt提供了qgetenv()包装器 请注意,如果您对获取标准文件系统位置(如主目录、应用程序数据目录等)感兴趣,则应改用(Qt 4)或(Qt 5)。对于Qt,在访问环境变量时还有一种“高级”方法。这只适用于在QCoreApplication中运行的Qt应用程序,大多数Qt应用程序都是这样 在这种情况下,对于至少4.6的Qt版本,您可以使用。您
getenv()
周围有一个包装器,名为
getenv()
是一个标准函数,但Visual Studio不推荐使用它,这就是为什么Qt提供了qgetenv()
包装器
请注意,如果您对获取标准文件系统位置(如主目录、应用程序数据目录等)感兴趣,则应改用(Qt 4)或(Qt 5)。对于Qt,在访问环境变量时还有一种“高级”方法。这只适用于在QCoreApplication中运行的Qt应用程序,大多数Qt应用程序都是这样
在这种情况下,对于至少4.6的Qt版本,您可以使用。您可以使用访问当前流程环境
QProcessEnvironment::systemEnvironment();
您可以通过
QProcessEnvironment::systemEnvironment().value("<variablename>", "<defaultvalue>");
QProcessEnvironment::systemEnvironment().value(“,”);
在大多数情况下,使用getenv/qgetenv方法应该更方便,因为这会以更通用的方式隐藏操作系统实现,而且它也是一种更“类似于Qt”的方法。这是一个扩展任何环境变量(如%PATH%)的函数吗。?例如,在调用我的进程之前,我从命令行设置了一个自定义环境变量?@satuon No。它可以获取标准位置,如用户的主目录和应用程序数据目录。等等。自定义环境变量当然需要使用getenv()获取。Qt不抽象GETEN(),因为它是所有标准C++编译器上可用的标准函数。实际上,QGEnEV是:因为“QGETEN())被引入,因为标准C库中的GETEN()被禁止在VC2005(和以后的版本)中。在VC中使用新的替换函数,并在所有其他平台上调用标准C库的实现。”@FrankOsterfeld Good catch。一些我不知道的事,在什么意义上?它回答了我的问题,即:一般来说,如何扩展环境变量,以及在Qt中是否存在与getenv等价的变量。我只是用%APPDATA%和$HOME编造了一些例子,我并不特别需要它们。我已经对我的问题进行了编辑,以删除对它们的任何提及,现在我希望它更清楚。此外,与
getenv
不同,它正确地支持包含Unicode字符的环境变量。QProcessEnvironment
是与QProcess一起使用的,用于为子进程设置环境。它不能用于更改当前进程的环境,请参阅文档[QProcessEnvironment]()
QProcessEnvironment::systemEnvironment().value("<variablename>", "<defaultvalue>");