gpt4 book ai didi

c++ - std::string(empty char*) 错误:basic_string::_S_construct null 无效错误

转载 作者:行者123 更新时间:2023-11-30 00:44:05 26 4
gpt4 key购买 nike

在 Debian 上,我需要读取一个环境变量,否则返回一个空字符串。这是我的代码:

std::string getEnv(std::string var)
{
char* val = ::getenv(var.c_str());
std::string retVal(val);
return retVal;
}

当找不到环境变量时,出现以下错误:

basic_string::_S_construct null not valid error

调试后,当我尝试向其加载空 val 时,错误代码发生在 std::string retVal(val) 上。

我认为从一个空的 char * 加载一个字符串是可行的,但似乎不行。

如果环境变量不存在,我该如何修复上面的代码以使其正常工作?

最佳答案

来自 man getenv:

The getenv() function returns a pointer to the value in the environment, or NULL if there is no match.

因此您需要考虑 val == NULL 的情况。

std::string getEnv(std::string var)
{
const char* val = ::getenv(var.c_str());
if (val == nullptr)
return std::string("");
return std::string(val);
}

将是一个可能的解决方案(如果未找到 var,则返回空字符串)。

关于c++ - std::string(empty char*) 错误:basic_string::_S_construct null 无效错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50813508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com