2011-05-03 14 views

回答

15

你必須檢查getenv成功第一:

char const* tmp = getenv("PATH"); 
if (tmp == NULL) { 
    // Big problem... 
} else { 
    std::string s(tmp); 
    // ... 
} 

(假設我已經有關於 「什麼它 應該做」 正確的猜測。)

+1

+1你可以通過更詳細地闡述「大問題」將空字符*指針傳遞給String構造函數時未定義的行爲。 OP應該意識到這一重要細節。 – 2011-05-03 09:04:24

+0

@Als好點。在這種情況下,如果'getenv'返回一個空指針(失敗),我期望一個謹慎的程序員想做一些不同的事情,但是絕對值得指出的是,用空指針創建一個字符串是未定義的行爲**一個空字符串,除非偶然會發生「未定義」行爲)。 – 2011-05-03 10:37:25

7
std::string getEnvVar(std::string const& key) 
{ 
    char const* val = getenv(key.c_str()); 
    return val == NULL ? std::string() : std::string(val); 
} 
相關問題