c++ - 使用 Arduino 和 C++ 声明和写入数组的问题

标签 c++ c arrays arduino

我第一次摆弄 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 中的字母!!!!啊。

最佳答案

几点说明:

  1. 您使用的是 C 还是 C++? String 是一个 C++ 类,但您正在创建一个 C 字符串数组 (char *)。

  2. 您正在创建一个字符串数组(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/

相关文章:

c++ - 未定义 'not' 命令 Visual Studio C++

c - 仅链接库中的某些符号

C:不同的字符串定义,我使用 sizeof() 得到不同的大小

c - 如何声明一个指向指针数组的指针

c++ - 如何在 Mac OS X 10.9 上安装 ZeroMQ 以便在 C/C++ 程序中使用

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

c++ - 可以从用户那里检索输入并运行另一个进程吗?

c - 当写入一个本地数组的字符出现在另一个本地数组中时,它是基于堆栈的缓冲区溢出的示例吗?

javascript - JS在键值对数组中查找特定键

c++ - 如何在方法中获取 int 数组(方法参数)的长度?