Std :: string由返回char*的函数赋值

Der*_*rek 3 c++

更新:对于getValue函数我无法控制,所以我可以从我这边做什么?

关于字符串和char*basic,我有一个愚蠢的问题.

我正在使用一个返回char*值的函数,

const char *getValue(const char *key)
{
    //if key found, and valueString is a string
      return valueString.c_str();
    //else
      return NULL;
}
Run Code Online (Sandbox Code Playgroud)

然后我初始化一个字符串来保存返回值,

std::string value = getValue(key);
Run Code Online (Sandbox Code Playgroud)

问题是,每当找不到值时,这意味着函数返回NULL,我的赋值行将遇到异常.但是当有合法的回报价值时,一切都运转良好.

我想知道1.这种用法完全错了吗?意味着我永远不应该将char*与字符串混合?2.如果没有,那么当有一个合法的指针返回时,我的字符串会自动复制并存储吗?3.最好的方法是什么?

谢谢.

Jer*_*fin 5

首先,如果valueString该函数是本地的,则使用返回的指针将给出未定义的行为.

其次,返回空指针是否合理将取决于你如何使用该指针,你没有告诉我们什么.

除非你绝对,否则必须摆弄指针,只需返回一个字符串,让你的生活变得更加容易.