2012-12-09 95 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(),但是它也不處理編碼。 –