gpt4 book ai didi

c++ - 什么是 C++ 数组中的初始化程序?

转载 作者:行者123 更新时间:2023-11-30 03:20:47 24 4
gpt4 key购买 nike

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

too many initializers in 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 个字母,错误也不存在。

如何消除错误?

最佳答案

您的声明

char myName[6][5]

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

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

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

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

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

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

请注意大小 if 7,因为 C++ 中的字符串实际上称为 null-terminated 字节字符串 , 而 null-terminated 是一个额外的字符,也需要空格。这意味着六个字符的字符串需要七个空间来适应终止符。

关于c++ - 什么是 C++ 数组中的初始化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52579382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com