【发布时间】:2011-08-17 13:22:22
【问题描述】:
【问题讨论】:
【问题讨论】:
std::string getEnvVar(std::string const& key)
{
char const* val = getenv(key.c_str());
return val == NULL ? std::string() : std::string(val);
}
【讨论】:
您必须先检查getenv 是否成功:
char const* tmp = getenv( "PATH" );
if ( tmp == NULL ) {
// Big problem...
} else {
std::string s( tmp );
// ...
}
(假设我猜对了“它是什么 应该做的”。)
【讨论】:
getenv 返回一个空指针(失败),我希望一个细心的程序员想要做一些不同的事情,但绝对值得指出的是,使用空指针创建一个字符串是未定义的行为(并且 不是 一个空字符串,除非它碰巧是“未定义”的行为)。