Nik*_* C. 20

Qt有一个包装器getenv(),叫做qgetenv().

QByteArray qgetenv ( const char * varName )
Run Code Online (Sandbox Code Playgroud)

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

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


小智 9

对于Qt,在访问环境变量时也存在"高级"方法.这只适用于Qt应用程序在QCoreApplication中运行的情况,大多数Qt应用程序都应如此.

在这种情况下,您可以使用QProcessEnvironment,对于至少4.6的Qt版本.您可以使用以下方式访问当前的流程环境

QProcessEnvironment::systemEnvironment();
Run Code Online (Sandbox Code Playgroud)

你可以通过查询任何变量

QProcessEnvironment::systemEnvironment().value("<variablename>", "<defaultvalue>");
Run Code Online (Sandbox Code Playgroud)

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