# c++字符串

定义

在C语言中使用字符数组的形式来表示字符串,c++中新加了string容器来专门表示字符,所以在c++中可以有两种方式来表示数组:

1,使用字符数组表示

char a[]= "hello"; //此时a的长度为6,最后一个字符为'\0'
char *a = "hello"; //(这样写会被警告)此时a被定义为指针

注:上述第二种写法,会报警(无法将字符常量转化为字符指针,原因如下:"hello",是一个字符常量(字符串),将其赋给字符数组自然没有任何问题,但是如果将其赋值给字符指针的话,这里会发生强制类型转换,而一个常量转换为指针会被强制转换为常量指针const char*,不是char *,所以会报错,解决办法*就是我们在进行一次强制类型转换,使得等号两边类型一致,即char *a = (char *)"hello"

2,使用string容器

加入头文件<string>或者<string.h>,因为string是标准库所以加不加.h都可以

如:

string a = "hello";
string a("hello");

计算字符串的长度

1,sizeof()

sizeof()是计算占内存的字节数,所以使用该函数计算字符串的长度时会把字符串结束标志'\0'加上,所以要减一。

注:

  • char* a = "hello",如果使用这种方法定义字符串,那么sizeof(a)一定得到8或者4,因为你计算的是指针a的长度,而不是a指向的字符串的长度
  • string a("hello");,如果这样定义字符串,那么sizeof(a)一定返回32,因为string是一个容器,大小为32,容器内部并不是存储的字符串,而是存储指向字符串的封装指针,大小永远是32。

2,strlen()

strlen()是定义在<string>头文件中的函数,用于计算字符数组代表的字符串的长度(不包含'\0'),但是使用std::string a("hello")定义的字符串不能直接使用该方法,需要将string转化为字符数组才行,具体如下strlen(a.c_str())。其实计算string的长度我们更推荐他自己的成员函数.size(),即a.size().

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容