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 に答える