C ++ Arduino - 初始化2D字符数组

时间:2017-06-10 06:37:17

标签: c++ multidimensional-array character

在Arduino C ++中,我试图初始化一个2 dim字符数组。

在数组的每个第1级元素将是两个第二级元素,第一个是一个字符(加上假定的\ 0终止符),第二个是最多十九个字符(加上假定的\ 0终止符)。因此,每个第一级元素应该不超过二十二个字符 - 1(+1)+ 19(+1)。

我正在尝试:

char Mchar[][22] = {
{" ","0000000"},
{"A","10111"},
{"B","111010101"},
{"C","11101011101"},
{"D","1110101"},
{"E","1"},
{"F","101011101"},
{"G","111011101"},
{"H","1010101"},
{"I","101"},
{"J","1011101110111"},
{"K","111010111"},
{"L","101110101"},
{"M","1110111"},
{"N","11101"},
{"O","11101110111"},
{"P","10111011101"},
{"Q","1110111010111"},
{"R","1011101"},
{"S","10101"},
{"T","111"},
{"U","1010111"},
{"V","101010111"},
{"W","101110111"},
{"X","11101010111"},
{"Y","1110101110111"},
{"Z","11101110101"},
{"0","1110111011101110111"},
{"1","10111011101110111"},
{"2","101011101110111"},
{"3","1010101110111"},
{"4","10101010111"},
{"5","101010101"},
{"6","11101010101"},
{"7","1110111010101"},
{"8","111011101110101"},
{"9","11101110111011101"},
{".","10111010111010111"},
{","",1110111010101110111"},
{"?","101011101110101"},
{"'","1011101110111011101"},
{"!","1110101110101110111"},
{"/","1110101011101"},
{"(","111010111011101"},
{")","1110101110111010111"},
{"&","10111010101"},
{":","11101110111010101"},
{";","11101011101011101"},
{"=","1110101010111"},
{"+","1011101011101"},
{"-","111010101010111"},
{"_","10101110111010111"},
{"\"","101110101011101"},
{"$","10101011101010111"},
{"@","10111011101011101"}
};

毋庸置疑,它对我不起作用,反复出现错误行:

  

错误:'char [22]'

的初始化程序太多

有人会指出我的方式错误。

TIA

2 个答案:

答案 0 :(得分:0)

这个的初始化语法不清楚,可能是错误的,你试图初始化一个字符数组(一个字符串),其中包含两个单独字符串的大括号分隔列表(应该用于初始化一个数组(以及其他内容) )字符串)。如果您有std::vectorstd::stringstd::pair可以访问

auto vec = std::vector<std::pair<char, std::string>>{
    {' ', "0000000"},
    {'A', "10111"},
    {'B', "111010101"},
    {'C', "11101011101"}
};

答案 1 :(得分:0)

你拥有的是22个char数组的数组。这样就会给你一个字符串列表。但是你似乎想要一个字符串对列表。为此,我认为您需要3尺寸:

char Mchar[][2][22] = {
    {" ","0000000"},
    {"A","10111"},
    {"B","111010101"},
    {"C","11101011101"},
    {"D","1110101"},
    // ...
};

或者你可以像这样创建一对char const*的数组:

char const* Mchar[][2] = {
    {" ","0000000"},
    {"A","10111"},
    {"B","111010101"},
    {"C","11101011101"},
    {"D","1110101"},
    // ...
};

现在你的字符串可以是任意长度,因为你的数组只存储指向它们第一个元素的指针。

修改

在重新阅读这个问题时,你真正要求的是:

char Mchar[][22] = {
    {" 0000000"},
    {"A10111"},
    {"B111010101"},
    {"C11101011101"},
    {"D1110101"},
    // ...
};