C ++中字符串的动态长度

时间:2015-01-25 13:20:57

标签: c++ string

我用C ++调试了一些程序,我注意到例如:

之间的区别
char str[] = "It's a test";

但是当您在<string>标题中使用字符串时,它似乎具有可变长度,例如,允许以下

string str1 = "abcdefg";
str1 = "abc";

不允许

char str[] = "It's a test";
str = "abc";

它不起作用!这背后的实施是什么?

2 个答案:

答案 0 :(得分:8)

你可以初始化一个数组,这是用

完成的
char array[] = "some string literal";

但您不能分配给数组。这只是语言的规则。

std::string类对赋值运算符有一个特殊的重载,允许将其赋值。

答案 1 :(得分:1)

你认为,一开始你已经初始化了字符数组,而另一次你使用它时,不需要再次初始化!但事实并非如此......每当你声明并初始化任何阵列时,你再次使用它时,你必须再次这样做!例如:

char user[] = "sci3nt15t";
char user[] = "Ender";

对你来说看看字符串和数组的定义很有用。

希望它有所帮助。