c语言用char*指针作为字符串时,在读取字符串时需要一个特殊字符0来标记指针的结束位置,也就是通常认为的字符串结束标记。
而c++语言则是面向对象的,长度信息直接被存储在了对象的成员中,读取字符串可以直接根据这个长度来读取,所以就没必要需要结束标记了。而且结束标记也不利于读取字符串中夹杂0字符的字符串。
参照std::string的实现 bits/basic_string.h
string 类型把' 0'当做普通字符处理,长度加一,可见' 0'不是结束字符,不含有特殊功能,string末尾不需加' 0'
C语言中没有string类型,而是用字符数组代替,一般字符数组可以不确定长度
char * string = " ABCD" ,编译器靠什么知道字符串结束,一般在后面加 ' 0'