[英]Can we assign const char* to a string in cpp?
虽然我的编译器在将 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
的内部缓冲区:
将内容替换为
s
指向的以空字符结尾的字符串的内容,就像通过assign(s, Traits::length(s))
。
但是,为了走另一条路线,从std::string
到const char*
,您需要在std::string
对象上调用其方法c_str()
。
我想知道这个作业是否真的有效
是的,它是有效的:
string name;
const char *name2 = "ABCD";
name = name2;
注意name = name2
调用 std::string 赋值运算符,之后这两个变量是完全独立的,即您可以自由更改name
,而name2
保持 const (又名文字字符串)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.