在字符串中加入 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::string
有 operator+
一个 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;
我正在尝试将 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::string
有 operator+
一个 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;