给出预定义的2-D char数组值

时间:2016-03-27 13:36:55

标签: c++ arrays

char数组在结构中定义,如下所示:

struct munchkin_grid_type
{
     char grid[5][5];
};

在另一个函数中,一个变量被定义为这个新类型,我希望它里面的char数组被填充:

munchkin_grid_type munchkin_grid;

munchkin_grid.grid[5][5] = 
{
        { 'a', 'b', 'c', 'd', 'e' },
        { ' ', ' ', ' ', ' ', ' ' },
        { ' ', ' ', ' ', ' ', ' ' },
        { ' ', ' ', ' ', ' ', ' ' },
        { '1', '2', '3', '4', '5' }
};

我得到的错误是:

  • 错误C2440:' =' :无法转换为初始化列表'到' char'

  • 智能感知:初始化值太多

如何在不使用std :: array / vector类型的情况下将这些值放入此二维数组中?我只想要一个普通的2D字符数组。

2 个答案:

答案 0 :(得分:1)

而不是

munchkin_grid_type munchkin_grid;

munchkin_grid.grid[5][5] = 
{
    { 'a', 'b', 'c', 'd', 'e' },
    { ' ', ' ', ' ', ' ', ' ' },
    { ' ', ' ', ' ', ' ', ' ' },
    { ' ', ' ', ' ', ' ', ' ' },
    { '1', '2', '3', '4', '5' }
};

DO

munchkin_grid_type munchkin_grid = 
{
    {
       { 'a', 'b', 'c', 'd', 'e' },
       { ' ', ' ', ' ', ' ', ' ' },
       { ' ', ' ', ' ', ' ', ' ' },
       { ' ', ' ', ' ', ' ', ' ' },
       { '1', '2', '3', '4', '5' }
    }
};

编辑 - 正如要求解释其基础。

基本上,这是带有初始化的单个struct named munchkin_grid`的定义。要理解它,请从括号中解决。

单个数组的char将初始化为

char x[5] = {'a', 'b', 'c', 'd', 'e'};

二维char数组引入了另一个{}嵌套。

char x[2][5] = {
    {'a', 'b', 'c', 'd', 'e'},
    {'1', '2', '3', '4', '5'}
  };

我已经从您的示例中更改了第一个维度,因为使用5x5时,不太清楚维度的初始化方式。如果交换维度,则初始化程序也需要更改,例如;

char y[5][2] = {
     {'a', 'b'},
     {'c', 'd'},
     {'e', '1'},
     {'2', '3'},
     {'4', '5'}
  };

然后,结构的初始化会增加另一级{}以获得munchkin_grid的初始化,如上所述。

答案 1 :(得分:-1)

代码munchkin_grid.grid[5][5] =正在访问数组的元素(您可能会将语法与其他语言混淆......)删除[5][5]应该可以解决您的问题。

编辑:以下代码应该有效(至少它没有产生任何IntelliSense错误..)

#include <array>
struct munchkin_grid_type
{
    std::array<char, 5> grid[5];
};

munchkin_grid_type munchkin_grid;

munchkin_grid.grid[0] = {'a', 'b', 'c', 'd', 'e' };
munchkin_grid.grid[1] = { ' ', ' ', ' ', ' ', ' ' };
munchkin_grid.grid[2] = { ' ', ' ', ' ', ' ', ' ' };
munchkin_grid.grid[3] = { ' ', ' ', ' ', ' ', ' ' };
munchkin_grid.grid[4] = { '1', '2', '3', '4', '5' };