0
点赞
收藏
分享

微信扫一扫

【c++字符串和字符数组】

您好 2022-04-25 阅读 59
c++

在 C++ 中我们可以使用 字符数组 来代替字符串,但字符串与字符数组不是完全等价的。

字符串与字符数组的区别

1、字符串以\0结束,string s ="fsdfsd\0saf";输出的s为fsdfsd;但是字符数组没有这个要求。

2、字符串一定是一个char的数组,但char字符数组不一定是字符串。

3、数字 0(和字符 ‘\0’ 等价)结尾的 char 数组 就是一个字符串,但如果 char 数组没有以数字 0 结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的 char 数组。

字符串与字符数组的比较

当我们指定数组长度

1、如果我们定义的字符数组长度和元素个数相等,则它是一个字符数组,例如char str[5]={'g','d','f','s','g'},但把这个字符数组修改一下 char str[6]={'g','d','f','s','g'},则它表示一个字符串,因为它会自动在最后一位补上\0,当遇到数字0或\0就会结束。

2、当我们如果需要对一个字符数组转换成字符串时,需要在字符数组最后面加上一个\0,

 如上图,输入会出现乱码,所以我们解决办法是在字符数组str末尾加上\0,

这种办法可能不是最好的,但也是一种解决办法。

如果不指定数组长度的情况 

1、只需在数组末尾加上0即可。

字符串遇0或\0自动结束

当我们将一个元素带有\0的字符数组转换成字符串的时候,则会出现如下情况:

 当我们将一个元素带有0的字符数组转换成字符串的时候,则会出现如下情况:

总结 

在 C++ 中,字符串必须是以 \0 做为结尾的,但字符数组没有这个要求。字符串一定是一个 char 的数组,但 char 的数组未必是字符串。

数字 0(和字符 ‘\0’ 等价)结尾的 char 数组就是一个字符串,但如果 char 数组没有以数字 0 结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的 char 数组。

写在最后

字符串和字符数组是小菜在工作中遇到的问题,所以写出来加深自己的理解。

以上内容有参考嗨客网,详解可转至C++字符串与字符数组-C++字符串与字符串数组区别对比-嗨客网 (haicoder.net)

我们只是知识的搬运工,无任何商业行为。

举报

相关推荐

0 条评论