Qt Mkdir带有环境变量

时间:2012-12-09 17:43:32

标签: qt

QDir *temp = new QDir("%USERPROFILE%");
bool ok = temp->mkdir("abc");

它不起作用。

1 个答案:

答案 0 :(得分: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“正确”地执行此操作。