类型"const char*"和"const char [2]"到二进制"运算符+"的操作数无效

invalid operands of types 'const char*' and 'const char [2]' to binary 'operator+'

本文关键字:char const 运算符 无效 二进制 操作数 类型      更新时间:2023-10-16

使用带有LoRa无线电的Adafruit Feather M0板,我想将GPS位置发送到接收器。当尝试创建具有ISO 8601时间戳和晚/长GPS值的数据包时,我使用以下代码创建char数组,然后发送它:

char radiopacket[40] = {GPS.year + "-" + GPS.month + "-" + GPS.day + "T" + GPS.hour + ":" + GPS.minute + ":" + GPS.seconds + "Z" + "," + GPS.latitude + "," + GPS.longitude};
rf95.send((uint8_t *)radiopacket, 40);

我一直得到错误:

将const char*和const char[2]类型的操作数转换为二进制无效"运营商+"

我哪里错了?

在c语言中不能像这样连接字符串。

char radiopacket[40];
sprintf(radiopacket, "%04d-%02d-%02dT%02d:%02d:%02dZ,%f,%f", GPS.year, GPS.month, GPS.day, GPS.hour, GPS.minute, GPS.seconds, GPS.latitude, GPS.longitude); 
rf95.send((uint8_t *)radiopacket, 40);
关于sprintf

中的格式字符串("%04d-..."),请参阅此处。

我猜你是从python来的

我认为你需要的是std:: stringstream