得到环境变量,得到NULL

Get environment variable in I get NULL

本文关键字:得到 NULL 环境变量      更新时间:2023-10-16

我正在尝试获取环境变量的内容,如果它存在

#define MY_VAR "MY_ENV_VAR"
//function
#pragma warning(disable:4996)
char const* temp = getenv(MY_VAR);
if(temp != NULL)
{
    string_variable = std::string(temp);            
}   
//code
#pragma warning(default:4996)

我以为我在做正确的事情,但是一旦我创建了环境变量并给了它默认值,我希望temp不是NULL…我是不是期望太高了?

我在调试,我看到:

temp 0x00000 <Bad Ptr> 
! CXX0030 Error: Expression cannot be evaluated

在命令行中运行"set"会显示环境变量(顺便说一下,是System)。

I am in Windows…

注意:我使用了pragma警告,因为我读到getenv已经被弃用了。

请给我一个想法,为什么我没有得到一个有效值。谢谢你。

您的代码没问题。添加/删除环境变量后,必须重新启动Visual Studio或/and计算机。

您发布的代码应该工作。反正对我来说是这样。也许你没有得到正确的env变量,或者Visual Studio环境没有它。试试这个:

std::string string_variable;
#define MY_VAR "PATH"
int main()
{
    char const* temp = getenv(MY_VAR);
    if(temp != NULL)
    {
        string_variable = std::string(temp);            
    }   
}

更好的是,去掉宏,这样你就可以在运行时看到传递给getenv的内容:

std::string string_variable;
static const std::string MY_VAR = "PATH";
int main()
{
    char const* temp = getenv(MY_VAR.c_str());
    if(temp != NULL)
    {
        string_variable = std::string(temp);            
    }   
}