我正在做一个小项目,遇到了以下情况:
std::string myString;
#GetValue() returns a char*
myString = myObject.GetValue();
我的问题是如果 GetValue()
返回 NULL myString
变成一个空字符串?它是未定义的吗?还是会出现段错误?
最佳答案
有趣的小问题。根据 C++11 标准,第 11 节。 21.4.2.9,
basic_string(const charT* s, const Allocator& a = Allocator());
要求:s 不能是空指针。
由于标准不要求库在不满足此特定要求时抛出异常,因此传递空指针似乎会引发未定义的行为。
关于c++ - 将 nullptr 分配给 std::string 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10771864/