我试图按照this documentation在C ++中读取环境变量。我的代码如下所示:
char * val;
val = getenv( "smartDir" );
ShowMessage( val );
delete val;
我的问题是val总是以NULL结束,好像环境变量不存在一样。但是,我清楚地定义了变量,你可以在这里看到:
我在这里做错了什么?
答案 0 :(得分:4)
getenv
返回的指针(参见here,部分关于未定义的行为)为了简化测试:大多数IDE都提供了“环境”功能。设置在'调试'设置 - 你可以改变那里传递给子进程的env(你的程序)(Visual有它,QtCreator有它,C ++ Builder可能还有它等。)
如果从控制台执行程序:使用SET var=value
而不是更改全局环境,在将env传递给子进程之前进行本地更改。
两种解决方案都不会修改全局环境,并允许快速测试不同的环境设置。