【问题标题】:invalid operands of types 'const char*' and 'const char [2]' to binary 'operator+' [duplicate]'const char *'和'const char [2]'类型的无效操作数到二进制'operator +'[重复]
【发布时间】:2016-08-20 14:56:04
【问题描述】:

使用带有 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++ gps lora


    【解决方案1】:

    你不能像在 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-...")的一些文档,请参阅here

    【讨论】:

    • sprintf 不安全,请改用snprintf,参见here
    • 谢谢!成功了
    【解决方案2】:

    我猜你是从 python 来的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-19
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 2023-03-21
      相关资源
      最近更新 更多