使用字符串字面值对字符数组进行初始化时,需要注意字符串字面值的类型为const char* 类型,并且以’\0’结尾,所以需要注意字符数组与字符串字面值的长度是否相等。代码如下:
#include <iostream>
#include <string>
using namespace std;
int main()
{
//char a[6] = "123456"; // error: const char[7]类型的值不能用于初始化"char [6]"类型的实体
char a[6] = "12345";
string s1(a);
cout << "s1:" << s1 << endl;
cout << "初始化的值:" << endl;
for (int i = 0; i < 6; i++)
{
cout << "a[" << i << "]: " << a[i] << endl; // 输出初始化的值
a[i] = char(i + 1 + int('0')); // 进行赋值
}
cout << "赋值后的值:" << endl;
for (int i = 0; i < 6; i++)
{
cout << "a[" << i << "]: " << a[i] << endl; // 输出赋值后的值
}
string s2(a);
cout << "s2:" << s2 << endl;
return 0;
}
执行的结果:
当试图以"123456"初始化char a[6]时,由于"123456"长度为7(多了一个’\0’的长度),所以编译器会报错。
另外,在赋值时,可以逐个的赋值,最后可以将a赋值为{1,2,3,4,5,6},但是此时字符数组不以’\0’结束,所以用a初始化string时会产生错误。