可能重複:
How to read Linux environment variables in c++如何把GETENV()的內容轉換成字符串
如何以下更改做它應該做的?
string s = getenv("PATH");
可能重複:
How to read Linux environment variables in c++如何把GETENV()的內容轉換成字符串
如何以下更改做它應該做的?
string s = getenv("PATH");
你必須檢查getenv
成功第一:
char const* tmp = getenv("PATH");
if (tmp == NULL) {
// Big problem...
} else {
std::string s(tmp);
// ...
}
(假設我已經有關於 「什麼它 應該做」 正確的猜測。)
+1你可以通過更詳細地闡述「大問題」將空字符*指針傳遞給String構造函數時未定義的行爲。 OP應該意識到這一重要細節。 – 2011-05-03 09:04:24
@Als好點。在這種情況下,如果'getenv'返回一個空指針(失敗),我期望一個謹慎的程序員想做一些不同的事情,但是絕對值得指出的是,用空指針創建一個字符串是未定義的行爲**一個空字符串,除非偶然會發生「未定義」行爲)。 – 2011-05-03 10:37:25
std::string getEnvVar(std::string const& key)
{
char const* val = getenv(key.c_str());
return val == NULL ? std::string() : std::string(val);
}
http://stackoverflow.com/questions/5866134/how-to-read-linux-environment-variables-in-c/5866166#5866166 – 2011-05-03 09:08:33