【发布时间】:2020-11-15 19:43:28
【问题描述】:
我有以下来自 RadioHead 库的代码。本质上,我想将以下变量作为 1 个字符数组传递给一个方法。变量:From、data 和“newData:”
代码:
if (manager.recvfromAckTimeout(buf, &len, 1000, &from))
{
Serial.print("got reply from : 0x");
Serial.print(from, HEX);
Serial.print(": ");
Serial.println((char*)buf);
client.send("newData:" + from + ";" +(char*)buf);
}
错误在代码的最后一行。这是一种将数据发送到 websocket 的方法。我收到以下错误:
exit status 1
invalid operands of types 'const char*' and 'const char [2]' to binary 'operator+'
我该如何解决这个问题?在 C 中使用字符串和字符是一件很恐怖的事情。当我出于某种原因使用字符串时,我的 Arduino 会冻结。我正在尝试仅使用字符来找到一种方法
基本上我想要的是这样的
char newData[] = "newData:" + from + (char*)buf;
【问题讨论】:
-
buf的确切类型是什么? -
看起来像 uint8。这是我正在使用的库的源代码,它只是方法的第一部分。 - bool RHRouter::recvfromAck(uint8_t* buf, uint8_t* len, uint8_t* source, uint8_t* dest, uint8_t* id, uint8_t* flags, uint8_t* hops)
-
您是否对 C++ 解决方案感兴趣,或者您只是使用该标签来获得更多关注?
-
所以缓冲区是计数的,不一定是 NUL 终止的:C++ 怎么知道如何从中正确构造字符串?为什么不创建自己的本地
char缓冲区,将消息格式化到其中,然后将该 NUL 终止的缓冲区传递给client.send()? -
C 不能使用
+运算符连接字符串。请改用strcat。