我第一次摆弄 Arduino 板。
我有一个这样声明的数组(我知道不要评判我),它用于将 LCD 的每个字符存储为一种缓存:
char* lcd_characters[] = {"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""};
然后,我尝试写入数组的特定插槽,如下所示,将该字母保存到其中:
new_char = String(message.charAt(i));
...巴拉巴拉巴拉...
lcd_characters[pos] = new_char; << error here
但是它给了我这个错误:
error: cannot convert 'String' to 'char*' in assignment
有趣的是,当我这样做时(如下),它确实将字母分配给它,但是我有一个 var,它是单个字母,但无法分配它。
lcd_characters[pos] = "H";
有人可以帮帮我吗?谢谢。我是 C 语言新手,到目前为止还不错。
基本上我想要一个字符数组,然后我想在数组位置上写入新值。
为什么我要写入该数组位置的字符串类型很重要,我也应该能够在那里写入数字或 bool 值并稍后调用它。最初声明数组的方式有问题吗?
编辑:
我试过了...
lcd_characters[pos] = new_char.c_str();
但是这给了我类似的错误:
invalid conversion from 'const char*' to 'char'
什么鬼?我想做的就是说这个数组位置等于这个新值。就是这样。我已经在 javascript、ruby、python(甚至 php)等中完成了这一百万次。我只想去,这个数组... x[12] 等于我在 new_char 中的字母!!!!啊。
最佳答案
几点说明:
您使用的是 C 还是 C++? String 是一个 C++ 类,但您正在创建一个 C 字符串数组 (
char *
)。您正在创建一个字符串数组(
char* var[]
等于char**
),但您的命名表明您需要一个字符数组。 C 字符串基本上是一个字符数组,因此请坚持使用(char *
或char []
)。
在这种情况下,我建议您仅使用 C 代码:
char lcdChars[4] = {' ', ' ', ' ', ' '}; // init with spaces
lcdChars[2] = 'x'; // write x to position 3
注意:C++中的字符串可以通过调用stringInstance.c_str()
输出C字符串(char *
)。
关于c++ - 使用 Arduino 和 C++ 声明和写入数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20467805/