Присоединиться к const char * в строку - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь поместить 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 String.Это не позволяет мне.Как я полагаю, указанное выше значение в const char*, как я могу добавить это?любые предложения будут полезны.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Проблема в том, что собственные строки (символьные массивы с нулевым символом в конце) и строки, на которые указывают символьные указатели , не объединяют с помощью оператора +. Однако строковый класс Arduino библиотеки String делает.

Итак, сначала вы должны создать объект класса String, а затем объединить массивы ваших персонажей с этим:

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

String input = String() + s1 + " " + s2;
0 голосов
/ 20 января 2019

Это не позволяет вам, потому что вы не можете объединить const char * s.

. Для этого вам нужно создать один std::string объект, после чего вы можете добавить const char * s к этому объекту (потому что 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 +" ...
...