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

它不起作用。

4

1 回答 1

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 或 _wgetenv_s来“正确”执行此操作。

于 2012-12-09T18:08:14.440 回答