在Qt中展开环境变量(getenv等价)

Expand environment variables in Qt (getenv equivalent)

本文关键字:getenv 等价 环境变量 Qt      更新时间:2023-10-16

我正在寻找一个等价的getenv函数

Qt在getenv()周围有一个包装器,称为qgetenv()

QByteArray qgetenv ( const char * varName )

getenv()是一个标准函数,但是Visual Studio已经弃用了它,这就是为什么Qt提供了qgetenv()包装器。

请注意,如果您对获得标准文件系统位置(如主目录、应用程序数据目录等)感兴趣,您应该使用QDesktopServices::storageLocation() (Qt 4)或QStandardPaths::writableLocation() (Qt 5)。

对于Qt,在访问环境变量时也有一个"高级"的方法。这只有在Qt应用程序在QCoreApplication中运行时才有效,大多数Qt应用程序都是这样。

在这种情况下,您可以使用QProcessEnvironment,对于至少4.6的Qt版本。您可以使用

访问当前进程环境。
QProcessEnvironment::systemEnvironment();

,你可以通过

查询任何变量
QProcessEnvironment::systemEnvironment().value("<variablename>", "<defaultvalue>");

在大多数情况下,这应该比使用getenv/qgetenv方法更方便,因为这以一种更通用的方式掩盖了操作系统的实现,而且我认为它也是一种更"类似于qt"的方法。