阿杜诺;动态获取数组元素;数组是包含不同大小字符串的结构类型

Arduino; dynamically getting elements of array; Array is of type struct which includes different size strings

在 Arduino C++ 中我有以下结构:

struct acceptedCommand {
 String Command;
 int   switchcase;
};

然后我像这样初始化上述结构的数组:

const acceptedCommand acceptedCommands[] = { 
  {"set-amountofcells", 1}, 
  {"set-cell-min-voltage", 2},
  {"set-cell-max-voltage", 7}
  ...
};

想要的结果: 我想动态 return 这个数组中的元素数量。

我已经尝试过的: 我不能使用 SizeOf 函数,因为这 return 只是数组使用的字节总数。

我也无法将 SizeOf 计算的值 return 除以结构的大小,因为数组的每个元素的大小不同(因为字符串的长度不同)。

那么如何动态获取acceptedCommands[]数组中的元素个数呢?

您需要使用向量而不是数组。 使用 Standard C++ for Arduino。然后你就可以在Arduino中使用stl vector了。

sizeof(acceptedCommands)/sizeof(acceptedCommand) 应该给出数组中结构的数量,也就是命令的数量。

你可能认为你的结构是可变大小的,但它不是,sizeof String 在编译时是已知的,即使它的 char 数组的长度不同,因为 String 将是一个对象可能包含一个指向 char 数组的指针,并且 sizeof 指针在编译时是已知的。