C++ primer 76页
定义和初始化 string 对象
string s1 ; //默认初始化,s1是一个空字符串
1)注意:
该 string 对象是一个字符串,其中没有任何一个字符, ‘\0’ 也没有!
2)字面值:比如字面值 “abcd”,其中是包含 5 个字符。因为末尾还有一个’\0’ 的空字符。
所以,sizeof(“abcd”) 的结果是 5.
3)如果写成
string s2 = “abcd”;
这样就只把除了空字符以外的字符,拷贝到了这个s2对象中.
s2.length() 或者 s2.size() 的结果就是 4,因为里面只有 4 个字符。
4)sizeof(s2)的结果是 28(在VS2017 x86的情况下)
这是和计算机硬件相关的,和具体的字符串对象无关。
5)如果写成 char[ ] ch= “abcd”,
那么 sizeof(ch)的结果是5.
因为上面是写成了 char[ ] ch = {‘a’,‘b’,‘c’,‘d’,’\0’};
6) strlen()函数
strlen(s2)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’
若string str={‘a’,‘b’,‘c’,’\0’,‘X’};
那么sizeof(str)为 5,strlen(str)为 3