在字符串中加入 const char*

Join const char* in a string

我正在尝试将 const char* 变量放入带有连接的字符串中,这些只是初始化变量。这是我在 String input 中尝试执行此操作的方式:

const char* topic1 = "home/bathroomlight";
const char* topic2 = "home/bathroomfan";
const char* topic3 = "home/dressingroomlight";
const char* topic4 = "home/makeuplight";

const char* topic1_status = "home/bathroomlight/status";
const char* topic2_status = "home/bathroomfan/status";
const char* topic3_status = "home/dressingroomlight/status";
const char* topic4_status = "home/makeuplight/status";

String input = "{ \"Bath Room Light\" : { \"pin\" : 1, \"status\" : \"off\", \"type\" : \"light\", \"command_topic\" : "+  topic1 +", \"state_topic\" : "+topic1_status +" }, \"Bathroom Fan\" : { \"pin\" : 2, \"status\" : \"off\", \"type\" : \"fan\", \"command_topic\" : "+topic2+", \"state_topic\" : "+topic2_status+" }, \"Dressing Room Light\" : { \"pin\" : 4, \"status\" : \"off\", \"type\" : \"light\", , \"command_topic\" : "+ topic3 +", \"state_topic\" : "+ topic3_status +" }, \"Makeup Light\" : { \"pin\" : 3, \"status\" : \"off\", \"type\" : \"light\", \"command_topic\" : "+ topic4 +", \"state_topic\" : "+ topic4_status +" } }";

当我尝试将这些值附加到 input 字符串时。它不允许我。我猜上面的值在 const char* 中,我该如何添加呢?任何建议都会有所帮助。

它不允许你,因为你不能连接 const char *s。

为此,您需要创建一个 std::string 对象,然后您可以将 const char * 添加到该对象(因为 std::stringoperator+一个 const char *):

std::string str{ "{ \"Bath Room Light\" : { \"pin\" : 1, \"status\" : \"off\", \"type\" : \"light\", \"command_topic\" : " };
str += topic1 + ", \"state_topic\" : "+topic1_status +" ...

问题是原生字符串(空终止字符数组)和通过字符指针引用的字符串concatenate 使用 + 运算符。但是 Arduino 库的字符串 class String 可以。

所以首先你必须构造一个 String class 对象,然后 连接 你的字符数组到那个:

const char* s1 = "hello";
const char* s2 = "world";

String input = String() + s1 + " " + s2;