-------------------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";