如何确定是否未设置环境变量?

时间:2011-07-05 21:06:56

标签: c++ windows visual-studio-2010 winapi environment-variables

所以我试试

char buffer[1000];
GetEnvironmentVariable("PATH",(char*)&buffer,sizeof(buffer));
std::cout << buffer << std::endl;

检查它是否存在,但我看不清楚它是否为空?并且它会产生一些非常糟糕的输出=(

3 个答案:

答案 0 :(得分:3)

MSDN对此有GetEnvironmentVariable

  

如果函数失败,则返回值为零。如果在环境块中找不到指定的环境变量,则GetLastError将返回ERROR_ENVVAR_NOT_FOUND。

(资料来源:http://msdn.microsoft.com/en-us/library/ms683188.aspx

所以我猜你应该测试函数的返回值:

char buffer[1000];
if(GetEnvironmentVariable("PATH", buffer, sizeof(buffer)))
{
    // non-zero, go ahead!
    std::cout << buffer << std::endl;
}
else
{
    // zero, something went wrong
}

答案 1 :(得分:0)

你总是可以使用getenv如果变量不存在则返回null,如果空白则返回空白字符串。

答案 2 :(得分:0)

未设置环境变量时,GetEnvironmentVariable返回0,GetLastError()返回ERROR_ENVVAR_NOT_FOUND(203)。

查看文档:{​​{3}}