You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:15:02