84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
ringa_lee
所以结论是:string::length()或者string::size()并不是调用strlen()得到的,你的实验已经证明了这一点。string并不是用0来确定字符串是否结尾的,c++中的string是一个类,它和c中单纯的字符数组有很大的不同。
如果你用c字符串初始化std::string,又不直接提供其长度,那就只能当成合法的c字符串来读取长度。(有能提供长度的构造器)
你的第二个c字符串就是不合法的,这种字符串无法获取长度。也没有办法检验一个c字符串是否合法。
所以结论是:string::length()或者string::size()并不是调用strlen()得到的,你的实验已经证明了这一点。string并不是用0来确定字符串是否结尾的,c++中的string是一个类,它和c中单纯的字符数组有很大的不同。
如果你用c字符串初始化std::string,又不直接提供其长度,那就只能当成合法的c字符串来读取长度。(有能提供长度的构造器)
你的第二个c字符串就是不合法的,这种字符串无法获取长度。也没有办法检验一个c字符串是否合法。