QDir *temp = new QDir("%USERPROFILE%");
bool ok = temp->mkdir("abc");
它不起作用。
对于可移植的 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 或 _wgetenv_s来“正确”执行此操作。