我用C ++调试了一些程序,我注意到例如:
之间的区别char str[] = "It's a test";
但是当您在<string>
标题中使用字符串时,它似乎具有可变长度,例如,允许以下 :
string str1 = "abcdefg";
str1 = "abc";
但不允许:
char str[] = "It's a test";
str = "abc";
它不起作用!这背后的实施是什么?
答案 0 :(得分:8)
你可以初始化一个数组,这是用
完成的char array[] = "some string literal";
但您不能将分配给数组。这只是语言的规则。
std::string
类对赋值运算符有一个特殊的重载,允许将其赋值。
答案 1 :(得分:1)
你认为,一开始你已经初始化了字符数组,而另一次你使用它时,不需要再次初始化!但事实并非如此......每当你声明并初始化任何阵列时,你再次使用它时,你必须再次这样做!例如:
char user[] = "sci3nt15t";
char user[] = "Ender";
对你来说看看字符串和数组的定义很有用。
希望它有所帮助。