1.C风格字符串
char ca1[]={'c','+','+'};//字符数组,不是C语言风格字符串
char ca2[]={'c','+','+','\0'};//C语言风格字符串(结尾必须是\0)
char ca3[]="c++";//C语言风格字符串,\0被隐含(结尾必须是\0)
2.c风格字符串的标准库函数
(1)strlen(cal);//检查cal的长度(直到查到/0)
(2)//对两个字符串直接进行比较时,c++字符串比较的是内容,而c比较的是地址
strcmp(s1,s2);//比较s1和s2的大小,如果s1与s2相同,为0;如果s1大于s2,为正数(一般为1);如果s1小于s2,为负数(一般为-1)
(3)拷贝 c++直接通过赋值语句即可完成;c语言通过函数完成
strcpy(s,s1);//将s1的内容拷贝到s中去
(4)连接:c++:直接通过相加即可完成
strcat(s,s1);//将s1连接到s之后,并拷贝到s中去
(5)strncpy(s,s1,n);//将s1的前n位拷贝到s中
strncat(s,s1,n);//将s1的前n位连接到d中,并拷贝到s中去
3.创建动态数组
int *p=(int *)malloc(n*sizeof(int));//c风格动态数组创建
free(p);//c风格动态数组释放
int *pia=new int[n];//c++动态数组创建
delete[] pia;//c++动态数组释放
(1)const对象的动态数组 const int *pci_pcd=new const int[100]();
(2)静态数组大小不能为0,动态数组大小可以为0
(3)结束时一定要释放动态数组,否则会导致空间泄露
4.新旧代码的兼容问题
旧代码:数组和c风格字符串
新代码:vector和string
(1)c风格字符串和string的相互转化
string st("Hello");
st=st+"bill";
const char *str=st.c_str();
(2)数组和vector的相互转换
/*数组转换为vector类型*/
const size_t arr_size=6;
int int_arr[arr_size]={1,2,3,4,56,6};
vector<int> ivec(int_arr,int_arr +arr_size);//将数组全部转换为vector类型(前包后不包)
/*vector类型转换为数组*/
vector<int> ivec2;
int ival;
cout<<"Enter numbers:"<<endl;
while(cin>>ival)
ivec2.push_back(ival);
int *parr=new int[ivec2.size()];
size_t ix=0;
for(vector<int>::iterator iter=ivec2.begin();iter!=ivec2.end();++iter,++ix)
parr[ix]=*iter;
for(ix=0;ix<ivec2.size();++ix)
cout <<*(parr+ix)<<endl;
5.多维数组--数组的数组