2021-5-22字符串char和string

-------------------char数组的初始化相关问题和用char来构建string------------
有时候char数组进行构建的方法是直接默认在后面加上了\0了,也就是c字符串的模式。
没有\0的时候,cout可能会异常,string构建也可能异常
想要构建string不出错,最好char数组最后有一个\0.

char a[] = "asdf"; //实际上a[4]已经存在表示为\0,可以转换成功
cout<<sizeof(a)<<endl;  //输出5
if(a[4]=='\0')
  cout<<"right"<<endl; //输出right
string b(a);
cout<<b.size()<<"  "<<b<<endl;


char aa[] = {'a', 's', 'd', 'f'};
if(aa[4]=='\0')
  cout<<"right"<<endl;  //此时不会输出right。因为用的是不同的构建方法
cout<<"aa  "<<aa<<endl; //此时cout也会出现问题
string bb(a);  //此时仍然可以正常的进行转化,但是在不同的编译器中是不一样的
                //想要让转化合理,最好的办法就是要加上\0,在char数组末尾
cout<<bb.size()<<"  "<<bb<<endl;
if(b == bb)
cout<<"b 和 bb相同\n";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值