C++ 如何将getenv()的内容放入字符串中
可能重复:C++ 如何将getenv()的内容放入字符串中,c++,environment-variables,C++,Environment Variables,可能重复: 如何将以下内容更改为它应该执行的操作 string s = getenv("PATH"); 您必须首先检查getenv是否成功: char const* tmp = getenv( "PATH" ); if ( tmp == NULL ) { // Big problem... } else { std::string s( tmp ); // ... } (假设我对“它是什么”的猜测是正确的 应该这样做“)+1在向字符串构造函数传递null cha
如何将以下内容更改为它应该执行的操作
string s = getenv("PATH");
您必须首先检查
getenv
是否成功:
char const* tmp = getenv( "PATH" );
if ( tmp == NULL ) {
// Big problem...
} else {
std::string s( tmp );
// ...
}
(假设我对“它是什么”的猜测是正确的
应该这样做“)+1在向字符串构造函数传递null char*指针时,通过详细说明未定义行为的“大问题”,您可以更好地回答问题。OP应该知道这个重要的细节,这是一个很好的观点。在这种情况下,如果
getenv
返回空指针(失败),我希望细心的程序员会想做一些不同的事情,但绝对值得指出的是,使用空指针创建字符串是未定义的行为(而不是空字符串,除非碰巧是“未定义”的行为)。
std::string getEnvVar(std::string const& key)
{
char const* val = getenv(key.c_str());
return val == NULL ? std::string() : std::string(val);
}