2

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

#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”会显示环境变量(顺便说一下,系统)。

我在Windows...

注意:我使用了编译指示警告,因为我读到 getenv 已被弃用或其他东西。

请告诉我为什么我没有得到有效值。谢谢你。

4

2 回答 2

4

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

于 2014-04-09T05:11:41.233 回答
1

您发布的代码应该可以工作。无论如何,它对我有用。也许你没有得到正确的 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);            
    }   
}
于 2012-12-21T19:39:20.117 回答