字符数组和字符串是可以相互转化的。
int a[] = {1, 2, 3};
char c[] = {'a','b','c'};
cout << a << endl;
cout << c << endl;
访问数组名,得到的是数组首地址,打印其他类型的数组名,打印的都是一串地址,只有字符数组打印出去的是字符串。
因为\0
这个结束符,是专门服务于字符数组的,是字符数组的结束符。因此打印字符数组时,内部可以知道在哪结束读取,不像其他类型的数组没有个”边界”。
一、字符数组转字符串
char shuZu[] = {'a','p','p','l','e','\0'};
cout << shuZu << endl; //apple
string s = shuZu;
cout << s << endl;
字符数组可以直接输出,得到的就是一串内容,而不是内存地址。这也是字符数组的特殊用法,打印数组名即代表输出里面存储的字符串。
二、字符串转字符数组
也可以直接将字符串赋值给一个字符数组,这样字符串会被自动转化为数组中的元素。
char shuZu[] = "helloworld";
cout << shuZu[0] << endl;
//修改
shuZu[0] = 'A';
cout << shuZu << endl;
在进行转换的时候,如果声明了数组的长度,要和后面的字符串内容进行匹配,不可越界。
三、字符串初始化数组
指定了字符数组的大小为6,以容纳字符串"hello"和结束标志'\0'。所以,特别注意
:字符数组的大小应大于字符个数。
char b[6] = {"hello"};
char b[6] = "hello";
二维数组
char a[3][4] = {"abc","def","ghi"};