Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qt中展开环境变量(与getenv等效)_C++_Qt_Environment Variables - Fatal编程技术网

C++ 在Qt中展开环境变量(与getenv等效)

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版本,您可以使用。您

我正在寻找函数的等价物。

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>");