我正在用C ++学习数组。我创建了一个数组,但出现错误:
char [5]中的初始化程序太多。
我的代码:
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
using namespace std;
int main() {
char myName[6][5] = {{'A', 'd', 'i', 't', 'y', 'a'},
{'S', 'i', 'n', 'g', 'h'}};
cout << "The 1st letter in the 1st array is " << myName[0][0] << endl;
return 0;
}
当我将char myName[6][5]
替换为myName[6][6]
时,即使数组有5个字母,也不存在错误。
如何摆脱错误?
答案 0 :(得分:2)
您的声明
char myName[6][5]
声明一个由五个字符组成的六个数组。它不是两个分别由6个字符和5个字符组成的数组。您有数组myName[0]
至myName[5]
。
由于myName
中的每个子数组只有五个字符,所以很容易理解为什么您会出错,因为第一个元素myName[0]
是用六个元素初始化的。
如果要使用 strings ,则首先应使用std::string
,如
std::string myNames[] = { "Aditya", "Singh" };
或者如果您不允许使用std::string
,请创建一个数组数组,其中每个子数组的长度足以容纳最长的字符串:
char myNames[][7] = { "Aditya", "Singh" };
请注意7
的大小,因为C ++中的字符串实际上称为 空终止 字节字符串,并且以null结尾的是一个额外的字符,也需要空格。这意味着一串6个字符的空格需要7个字符才能适合终止符。