C++数组中的初始值设定项是什么?

What is an initializer in arrays in C++?

本文关键字:是什么 数组 C++      更新时间:2023-10-16

我正在学习C++数组。我创建了一个数组,但出现错误:

字符 [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;
}

当我用myName[6][6]替换char myName[6][5]时,即使数组有 5 个字母,错误也不存在。

如何摆脱错误?

您的声明

char myName[6][5]

声明一个由六个数组组成的数组,每个数组包含五个字符。它不是两个 6 个字符和 5 个字符的数组(分别(。您有数组myName[0]myName[5]

由于myName中的每个子数组只有五个字符,因此很难理解为什么会出现错误,因为第一个元素myName[0]是用六个元素初始化的。

如果你想使用字符串,那么首先你应该使用std::string,如

std::string myNames[] = { "Aditya", "Singh" };

或者,如果您不允许使用std::string,请创建一个数组数组,其中每个子数组的长度足以容纳最长的字符串:

char myNames[][7] = { "Aditya", "Singh" };

请注意,大小 if7,因为 C++ 中的字符串实际上称为以 null 结尾的字节字符串,而以 null 结尾的是一个也需要空格的额外字符。这意味着一个六个字符的字符串需要七个字符的空间来容纳终结符。