我正在寻找等效的getenv函数。在Qt中扩展环境变量(getenv等效)
10
A
回答
19
Qt有一个围绕getenv()
的包装,称为qgetenv()
。
QByteArray qgetenv (const char * varName)
getenv()
是一个标准的功能,但Visual Studio中已否决它这就是为什么Qt提供了qgetenv()
包装。
请注意,如果您有兴趣参与标准的文件系统位置(如主目录,应用程序数据目录等),你应该使用QDesktopServices::storageLocation()
(QT 4)或QStandardPaths::writableLocation()
(QT 5)。
6
对于Qt,访问环境变量时也有一种“高级”方法。如果你的Qt应用程序在QCoreApplication中运行,这只适用于大多数Qt应用程序。
在这种情况下,您可以使用QProcessEnvironment,Qt版本至少为4.6。您可以通过使用
QProcessEnvironment::systemEnvironment();
访问当前进程的环境,你可以通过
QProcessEnvironment::systemEnvironment().value("<variablename>", "<defaultvalue>");
查询任何变量这应该是更方便的使用在大多数情况下GETENV/qgetenv方法,因为这种阴影操作以更通用的方式实现系统实现,恕我直言,它也是一种更“Qt-like”的方法。
+0
另外,与'getenv'不同,它支持正确的包含Unicode字符的环境变量。 –
相关问题
- 1. 环境变量扩展
- 2. GETENV - 如何设置环境变量
- 3. Omake getenv - 找不到环境变量
- 4. persistence.xml中的环境变量扩展(JPA)
- 5. gmake中的环境变量扩展
- 6. MSbuild不扩展环境变量
- 7. MSBuild无法扩展环境变量
- 8. TEMP C++环境变量扩展(Windows)
- 9. RewriteCond模式不扩展环境变量
- 10. Windows 7的PATH环境变量扩展
- 11. Xcode等效于Visual Studio环境变量
- 12. Qt Mkdir与环境变量
- 13. QT QMAKE -set环境变量
- 14. 如何在C++中扩展包含环境变量的路径
- 15. 在bash中分配环境变量的参数扩展
- 16. 如何在.NET中扩展环境变量%CommonProgramFiles%\ system \
- 17. 扩大环境变量
- 18. 环境变量不扩大
- 19. PHP`getEnv`能够读取系统环境变量
- 20. getenv - Mac OS X和Linux上的环境变量
- 21. PHP:环境变量未通过的getenv()读取
- 22. 从Google Chrome扩展程序中读取环境变量
- 23. 使用python扩展字符串中的环境变量
- 24. 在bash,环境变量不是选项卡扩展正确
- 25. 你如何在DOS下抑制环境变量扩展?
- 26. 是否存在与Apaches的{ENV:REDIRECT_STATUS}等效的Nginx环境变量?
- 27. 扩展默认Maven原型环境变量
- 28. 用双百分号扩展环境变量
- 29. 通过ssh传递环境变量以进行远程扩展
- 30. Windows FOR命令不扩展系统环境变量
这是一个扩展任何环境变量如%PATH%等的函数吗?例如,我在调用过程之前从命令行设置的自定义环境变量? – sashoalm
@satuon编号它可以为用户的主目录和应用程序数据目录提供标准位置。和别的。自定义环境变量当然需要用getenv()来获取。 Qt不提取getenv(),因为它是所有标准C++编译器都可用的标准函数。 –
实际上,有qgetenv:http://doc.qt.digia.com/qt/qtglobal.html#qgetenv因为:“引入了qgetenv(),因为标准C库中的getenv()在VC2005(及更高版本)。qgetenv()在VC中使用新的替换函数,并在所有其他平台上调用标准C库的实现。“ –