阿杜诺;动态获取数组元素;数组是包含不同大小字符串的结构类型
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 指针在编译时是已知的。
在 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 指针在编译时是已知的。