【c++知识点】C字符串

【表示】
c字符串:本质是以'\0'结尾的字符数组char[](区别在于是否含'\0'),实际存储比字符数组少1个元素
注意:c++中作为字面值使用的字符串(如"hello")其实以c字符串形式存储


【初始化】
char cs[]={'a','b','c'};//仅含有3个字符元素;
char cs[]="abc";//与上式不等价!!!末尾自动添加'\0',含有'a','b','c','\0'共计4个字符元素
char cs[4]="abc";//等价于char cs[]="abc";c字符串变量长度会自动加1
注意:不要替换空字符'\0',如cs[4]='Z';//缺失结束符,可能导致字符串无法遍历

【遍历】
int i=0;
char cs[]="hello world";
while(cs[i]!='\0'){
   cout<<cs[i]<<endl;
}

【赋值、比较和连接】
1、使用#include<cstring>调用,位于std命名空间
2、不能使用=对c字符串变量进行赋值;不能使用==判断c字符串是否相等
3、安全函数strncpy()和strncmp()不保证编译器兼容性;

长度strlen(),返回整数,空字符'\0'不参与计算

赋值strcpy()
char cs[10];
cs="hello";//赋值非法,c字符串和c字符串变量本质是数组
char cs[10]="hello";//非赋值操作,声明时合法;
strcpy(cs,"hello");//不安全!不负责检查c字符串长度是否超出cs变量长度,可能溢出
strncpy(cs,"hello",limit);//安全函数,指定复制长度

比较strcmp(),基于ASCII字符表字典顺序,逐次比较每个字符
strcmp(cs1,cs2);
//cs1字符码=cs2字符码,返回0
//cs1字符码>cs2字符码,返回值>0
//cs1字符码<cs2字符码,返回值<0
注意:字符串相等时返回0值,布尔值为false
strncmp(cs1,cs2);//安全函数,指定比较长度

连接strcat()
strcat(cs,val);//cs必须为c字符串变量,val必须能转换为c字符串值
strcat(cs,val,limit);//安全函数,指定连接长度

【函数参数】
c字符串变量本质是数组,因此函数字符串形参本质是数组形参
1、更改形参的值,需同时指定附加int形参,给出声明长度
2、不更新形参的值,则用'\0'检测c字符串值是否结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值