尽管我的编译器在将const char *分配给字符串时不会抛出错误,但我想知道此分配是否真的有效并且不会抛出一些意外结果
string name;
const char* name2 = "ABCD";
name = name2;
你绝对可以。
std::string
旨在替换乏味且容易出错的C字符串,const char*
因此要使其成为一个很好的替换/成功产品,它需要与之兼容的向后兼容性const char*
。
name = name2;
调用,operator=
因此,如果我们检查basic_string
此运算符的s重载,我们可以看到(3):
basic_string& operator=( const CharT* s );
这CharT
是该类型,char
因此您可以const char*
它将执行您期望的操作,将其const char*
指向的内容复制到内部缓冲区std::string
:
将内容替换为以所指向的以null终止的字符串的内容,
s
就像by一样assign(s, Traits::length(s))
。
为了走另一条路线,从std::string
到const char*
,您需要c_str()
在std::string
对象上调用其方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句