2010-11-15 62 views
1

我正在編寫一個在Linux中運行的Qt應用程序。我需要寫一個文件到:如何編寫包含環境變量的路徑?

"$XDG_CONFIG_DIRS/whatever"/ "$HOME/whatever" 

如何解決我的代碼中的環境變量## Heading ##?

+0

嗨。剛剛看到這個問題,提供了一個例子在同時您的其他問題 - 請參閱http://stackoverflow.com/questions/4177953/saving-configs-in-qt-linux/4179013#4179013 – 2010-11-15 17:37:00

回答

3

使用只是普通的庫函數,你用getenv()查找環境變量的值:

const char *dirs = getenv("XDK_CONFIG_DIRS"); 

這將返回NULL如果變量未在環境中設置,所以一定要確保你的代碼處理這個案例。

在這種情況下,您必須自己將變量值「插值」到文本的其餘部分。

不知道Qt是否提供了一個包裝或更高級別的可以爲你做插值的東西,我沒有使用過Qt。

+0

不,不'getopt( )'。 – 2010-11-15 13:12:06

+0

@Ignacio:呃,不,顯然不是。有時候,手指比大腦更快。編輯,當然我的意思是getenv()。謝謝。 – unwind 2010-11-15 13:13:31

0

getenv,如前所述,如果你真的只是針對Linux。如果你希望它可移植到非Unix平臺上,你應該使用qgetenv()或QProcessEnvironment :: systemEnvironment().value(QLatin1String(「XDG_CONFIG_DIRS」))。一般來說,使用便攜式Qt方式是一種很好的做法。

+0

我懷疑'$ XDG_CONFIG_DIRS'在非* nix平臺下有什麼用處;)好的做法仍然是正確的。 – 2010-11-15 14:34:48

相關問題