2017-06-10 4 views
-2

Dans Arduino C++, j'essaie d'initialiser un tableau de 2 caractères.C++ Arduino - initialise un tableau 2D de caractères

À chaque élément de premier niveau du tableau sera deux éléments de deuxième niveau, le premier étant un caractère (plus le terminateur supposé \ 0) le second étant un maximum de dix-neuf caractères (plus le terminateur supposé \ 0). Ainsi, chaque élément de 1er niveau ne devrait pas avoir plus de vingt deux caractères - 1 (+1) + 19 (+1).

Je suis en train:

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"} 
}; 

Inutile de dire que cela ne fonctionne pas pour moi, obtenir des lignes d'erreur répétées de:

error: too many initializers for ‘char [22]’

Est-ce que les soins de quelqu'un pour signaler l'erreur de mes moyens .

TIA

+0

Bienvenue sur Stack Overflow. Veuillez prendre le temps de lire [The Tour] (http://stackoverflow.com/tour) et de consulter le contenu du [Centre d'aide] (http://stackoverflow.com/help/asking) quoi et comment vous pouvez demandez ici. –

+1

Il reste un seul initialiseur attendu pour la partie '[22]'. Cette syntaxe n'est simplement pas acceptée. –

Répondre

0

La syntaxe d'initialisation pour cela est peu claire et probablement mal, vous essayez d'initialiser un tableau de caractères (une chaîne) avec une accolade liste délimitée par des deux chaînes individuelles (qui devrait être utilisé pour initialiser un tableau (entre autres choses) de chaînes de caractères). Si vous avez accès à std::vector, std::string et std::pair faire à la place

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

Qu'est-ce que vous avez est un tableau de 22 tableaux char. Donc, cela vous donne une liste de chaînes. Mais vous semblez vouloir une liste de paires de chaînes. Pour cela, je pense que vous avez besoin 3 dimensions:

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

Sinon, vous pouvez créer un tableau de paires de char const* comme ceci:

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

Maintenant vos cordes peuvent être une longueur parce que votre tableau ne stocke que les pointeurs à leurs premiers éléments.

EDIT

En relisant la question, ce que vous demandez littéralement serait ceci:

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