如何在 C++ 中将 char 指针附加到 std::string
Posted
技术标签:
【中文标题】如何在 C++ 中将 char 指针附加到 std::string【英文标题】:How to append char pointer to std::string in C++ 【发布时间】:2021-09-08 10:02:44 【问题描述】: char * val = ep->GetValue();
std::string m="zValue:" + (std::string)val;
ep->GetValue() 返回一个字符指针。我想将它附加到一个字符串。我按照上面的方法尝试了,但它会引发以下错误。
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_M_construct null not valid
【问题讨论】:
我明白val == nullptr
...所以错误
虽然与您的问题无关,但几乎任何时候您觉得需要进行 C 风格转换或转换(就像您对 (std::string)val
所做的那样),您应该将其视为您正在做的标志有事吗。如果要创建字符串,请使用std::string(val)
显式执行。
ep_>GetValue()
返回空值。当ep->GetValue()
返回 null 时,您希望字符串是什么样的?
【参考方案1】:
您收到此错误是因为您尝试从 nullptr
构建 std::string。试试:
std::string m = "zValue:";
if(char * val = ep->GetValue()) m += val;
【讨论】:
【参考方案2】:或以可重复使用的形式:
#include <string>
#include <iostream>
std::string string_from_ptr(const char* p)
std::string retval;
if (p != nullptr) retval = p;
return retval;
int main()
char* p nullptr ;
std::cout << string_from_ptr(p);
// auto str = string_from_ptr(ep->GetValue());
【讨论】:
糟糕 ;) 修复了它以上是关于如何在 C++ 中将 char 指针附加到 std::string的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 中将 std::string 转换为 const char [重复]