Pet*_*isu 1 c++ string std char
这段代码好吗?
void SomeClass :: foo(const char * _name) {
//name is of type const char *
name = std::string(_name).c_str();
}
Run Code Online (Sandbox Code Playgroud)
它看起来像是在工作,但我不确定它是否正常
我应该做一个旧学校strcpy吗?
没关系,因为它编译并且不会导致未定义的行为.
这并不是因为名称指向的语句完成执行后一个无效的内存确定.
name = std::string(_name).c_str();
Run Code Online (Sandbox Code Playgroud)
在此语句的末尾,临时的std :: string被销毁,它释放了c_str()的内存.
我应该做一个旧学校strcpy吗?
不,只需将名称更改为std :: string:
void SomeClass :: foo(const char * _name) {
//name is of type std::string
name = _name;
}
Run Code Online (Sandbox Code Playgroud)