C++如何将char指针追加到std::string,空指针构造异常怎么解决?
问题原因
该错误的核心触发原因是 ep->GetValue() 返回了空指针(nullptr/NULL)。std::string 接收 const char* 类型参数的构造函数,要求入参必须指向一个合法的、以\0结尾的C风格字符串,不允许传入空指针。你直接将空的char指针强制转换为std::string时,直接触发了标准库的参数校验逻辑,抛出该std::logic_error异常。
正确实现方案
拼接前必须先对返回的char指针做空值校验,根据业务需求处理空指针场景后再执行拼接,可选写法如下:
- 写法1:使用
+=运算符分步拼接,可读性最高
char * val = ep->GetValue(); std::string m = "zValue:"; if (val != nullptr) { // 可根据业务逻辑调整空指针时的默认填充内容 m += val; } else { m += "[空值]"; }
- 写法2:使用
append方法拼接
char * val = ep->GetValue(); std::string m = "zValue:"; if (val) { m.append(val); }
- 写法3:如果业务逻辑可以100%保证
GetValue不会返回空指针,可简化为:
std::string m = std::string("zValue:") + ep->GetValue();
内容的提问来源于stack exchange,提问作者Isini Dananjana
相关产品推荐
相关产品推荐

