C++ Primer Plus (第6版)学习笔记 (c风格字符串01)

字符串是存储在内存的连续字节中的一系列字符。c++有两种处理字符串的风格。下面将会介绍c风格的字符串。存储在连续字节中的一系列字符串,相当于存储在char类型的数组中,每个字符都位于自己的元素中。
我们都知道c语言的字符串以:空字符(null)结尾,空字符被写作\0,其ASCII码为0。这里\0并不是数字0,0的ASCII值是48完全是两个不同的元素。所以我们在写字符串时不用担心字符串里面有数字0而提前结束。但是如果字符串中有/0呢?或者是如果想在字符串里面添加双引号(")呢?

char a[]="str\0ing";
cout <<a;  //结果为:str
char b[]="str\\0ing";
cout <<b;  //结果为:str\0ing

从代码运行结果看,只需要在\0前面加一个\就行啦,那在字符串里面添加双引号"呢?

char a[] = "str\"ing";
cout << a;   //结果为:str"ing

显然在字符串里面加双引号跟在字符串里面加\0是一样的结果
这里我想输出一个\\,我还用上面的方法在\\前面加一个\看看结果是什么

char a[] = "stri\\\g";
cout << a;   //结果是:stri\g
char b[] = "stri\78";
cout << b;   //结果是:stri8g

显然结果并不是:stri\\g ,再看最下面的两行代码输出b的结果是stri8g。说明\(转义操作符)只对单个元素有用。
在使用数组表示字符串数时

char name6[] = { 'a','b','c' };
cout << name6;//结果:abc烫烫烫烫烫烫烫烫烫烫烫烫胎?  --显然这是错误的
char name7[] = {'a','b','c','\0}; //结果是abc

很显然上面数组name7才是字符串,而对于name6,cout只会一直在内存中寻找\0才能结束。
虽然上面的name7可以用于表示字符串,但是它写着太麻烦啦,一般表示字符串都会用双引号表示(char c[]="abc")结尾自带\0。
当数组这样写是时(char c[4]="abc";)一定要保证数组[]里的参数要至少比字符串里的元素个数多一个,在定义数组时,数组长度大点最好,只不过是浪费点内存,要是程序这而导致错误,则得不偿失。
这是我第一次写博客,简单的记录我的学习,如果有思想上的错误与不足或者程序上的错误与不足,欢迎各位大佬们的指正、与建议。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值