12

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

4

2 回答 2

20

Qt 有一个包装器getenv(),称为qgetenv().

QByteArray qgetenv ( const char * varName )

getenv()是一个标准函数,但 Visual Studio 已弃用它,这就是 Qt 提供qgetenv()包装器的原因。

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

于 2013-01-07T16:57:40.550 回答
11

对于 Qt,在访问环境变量时也有一种“高级”的方法。这只有在您的 Qt 应用程序在 QCoreApplication 中运行时才有效,大多数 Qt 应用程序都应该是这种情况。

在这种情况下,对于至少 4.6 的 Qt 版本,您可以使用QProcessEnvironment 。您可以通过使用访问当前进程环境

QProcessEnvironment::systemEnvironment();

你可以通过查询任何变量

QProcessEnvironment::systemEnvironment().value("<variablename>", "<defaultvalue>");

这应该比在大多数情况下使用 getenv/qgetenv 方法更方便,因为这会以更通用的方式隐藏操作系统实现,恕我直言,它也是一种更“类似 Qt”的方法。

于 2016-05-04T06:52:31.233 回答