Класс std::string
вызывает strlen
при использовании std::string(str)
, что приведет к нарушению доступа при передаче пустой строки.Что вам нужно сделать, это что-то вроде:
std::string env(const char *name)
{
const char *ret = getenv(name);
if (!ret) return std::string();
return std::string(ret);
}
или
bool getenv(const char *name, std::string &env)
{
const char *ret = getenv(name);
if (ret) env = std::string(ret);
return !!ret;
}
, которые вы можете использовать следующим образом:
std::string myenv;
if (getenv("MYENV", myenv))
doSomethingWithMyEnv(myenv);