加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:21:45 所属栏目:百科 来源:网络整理
导读:更新:对于getValue函数我无法控制,所以我可以从我这边做什么? 关于字符串和char * basic,我有一个愚蠢的问题. 我正在使用一个返回char *值的函数, const char *getValue(const char *key){ //if key found,and valueString is a string return valueString
更新:对于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;
}

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

std::string value = getValue(key);

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

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

谢谢.

解决方法

由于您无法控制getValue()函数的作用,因此在将其赋值给std :: string之前,需要检查NULL的返回值.

std::string value;  // value is an empty string
const char *retVal = NULL;

if( ( retVal = getValue(key) ) != NULL ) {
  value.assign( retVal );
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读