Visual c++ 使用getenv检索不使用';不存在 我使用MS VisualStudio 2008开发C++应用程序。我使用“getenv()”函数来获取环境变量,但当搜索到的环境变量不存在时,它会抛出访问冲突异常。这里的问题是什么?如何纠正
文档说如果搜索到的环境变量不存在,getenv()函数将返回一个空指针,但是为什么我会得到这个访问冲突异常?当您使用Visual c++ 使用getenv检索不使用';不存在 我使用MS VisualStudio 2008开发C++应用程序。我使用“getenv()”函数来获取环境变量,但当搜索到的环境变量不存在时,它会抛出访问冲突异常。这里的问题是什么?如何纠正,visual-c++,getenv,Visual C++,Getenv,文档说如果搜索到的环境变量不存在,getenv()函数将返回一个空指针,但是为什么我会得到这个访问冲突异常?当您使用std::string(str)时,std::string类调用strlen,这将在传递空字符串时产生访问冲突。您需要做的是: std::string env(const char *name) { const char *ret = getenv(name); if (!ret) return std::string(); return std::stri
std::string(str)
时,std::string
类调用strlen
,这将在传递空字符串时产生访问冲突。您需要做的是:
std::string env(const char *name)
{
const char *ret = getenv(name);
if (!ret) return std::string();
return std::string(ret);
}
或
您可以这样使用:
std::string myenv;
if (getenv("MYENV", myenv))
doSomethingWithMyEnv(myenv);
可能您没有检查getenv()是否返回NULL。向我们显示代码。您如何处理getenv的返回值?听起来您正在解引用返回的NULL。例如,尝试将其放入一个字符串,如
std::string var=getenv(“MY_var”)
即可。
std::string myenv;
if (getenv("MYENV", myenv))
doSomethingWithMyEnv(myenv);