使用std :: string构造函数复制const char * [英] Copy of const char * using std::string constructor

查看:147
本文介绍了使用std :: string构造函数复制const char *的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个代码确定吗?

void SomeClass :: foo(const char * _name) {
     //name is of type const char *
     name = std::string(_name).c_str();
}

它看起来像是工作,但是iam不确定如果它是确定

it looks like it is working, but iam not sure if it is ok

我应该做一个旧学校strcpy吗?

should i do an old school strcpy ?

推荐答案



It's not ok since name points to an invalid memory after the statement completes execution.

name = std::string(_name).c_str();

在此语句结束时,临时std :: string被销毁,释放c_str ()。

At the end of this statement the temporary std::string is destroyed and it frees the memory of c_str().


我应该做一所旧学校strcpy吗?

should i do an old school strcpy ?


b $ b

不,只需将名称更改为std :: string:

No, just change name to be std::string:

void SomeClass :: foo(const char * _name) {
     //name is of type std::string
     name = _name;
}

这篇关于使用std :: string构造函数复制const char *的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆