【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)

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

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值