关于字符串和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.最好的方法是什么?
谢谢.
首先,如果valueString该函数是本地的,则使用返回的指针将给出未定义的行为.
其次,返回空指针是否合理将取决于你如何使用该指针,你没有告诉我们什么.
除非你绝对,否则必须摆弄指针,只需返回一个字符串,让你的生活变得更加容易.