2012-12-09 132 views
1
QDir *temp = new QDir("%USERPROFILE%"); 
bool ok = temp->mkdir("abc"); 

并且它不起作用。Qt Mkdir与环境变量

+1

用'getenv'获取变量的值。 'cstdlib.h'标题的一部分 – 2012-12-09 17:47:23

回答

4

对于便携式Qt代码,使用静态方法 QProcessEnvironment::systemEnvironment()

QProcessEnvironment env(QProcessEnvironment::systemEnvironment()); 
QDir *temp = new QDir(env.value("USERPROFILE")); // returns empty string for unset variable 
bool ok = temp->mkdir("abc"); 

的选择,因为在实际问题的意见建议,您也可以使用

#include <cstdio> 

QString envValue(QString::fromLocal8bit(::getenv("USERPROFILE"))); // standard, yet deprecated in Windows... 

我宁愿使用第一个选择,让Qt照顾字符编码的东西。如果你想使用非Qt函数,我认为在Windows中你应该使用getenv_s or _wgetenv_s来“正确地”这样做。

+1

还有qgetenv(),但是它也不处理编码。 –