c++ 自带string类 的对象 字符串结尾带不带‘\0’?
黄舟
黄舟 2017-04-17 13:44:57
0
6
783

c++ 自带string类 的对象 字符串结尾带不带‘0’?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(6)
大家讲道理


先上图

string 类型把' 0'当做普通字符处理,长度加一,可见' 0'不是结束字符,不含有特殊功能,string末尾不需加' 0'

C语言中没有string类型,而是用字符数组代替,一般字符数组可以不确定长度
char * string = " ABCD" ,编译器靠什么知道字符串结束,一般在后面加 ' 0'

小葫芦

C++ 中的std::string和 C-style string 是两种不同的字符串,前者是标准库中定义的一个类,后者是字符数组的别名。

  • C-style string:通常都以

Ty80

0是C语言中的的字符数组作为结束标记用的,C++字符串没有这个需要

巴扎黑

何不创建一个string对象,打印看看他的size?

巴扎黑

c语言用char*指针作为字符串时,在读取字符串时需要一个特殊字符0来标记指针的结束位置,也就是通常认为的字符串结束标记。
而c++语言则是面向对象的,长度信息直接被存储在了对象的成员中,读取字符串可以直接根据这个长度来读取,所以就没必要需要结束标记了。而且结束标记也不利于读取字符串中夹杂0字符的字符串。

参照std::string的实现 bits/basic_string.h
大家讲道理

String本身是封装过的,会把'

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板