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);
}