如何将布尔类型转换为const char *

问题描述 投票:1回答:1

我正在尝试使用PubSubClient库的成员函数,该成员函数使用参数const char*之一,但是我需要将代码中的bool type变量传递给该成员函数(作为有效负载)。我该如何实现?

该库的成员函数如下:

boolean PubSubClient::publish(const char* topic, const char* payload) {
    return publish(topic,(const uint8_t*)payload,strlen(payload),false);
}
c++ arduino mqtt arduino-esp8266
1个回答
0
投票

嗯,该函数需要一个常量作为输入。这意味着您不能将变量传递给它。常数值不能更改,并且会进行硬编码。将其与定义进行比较,您绝对不能执行以下操作:

#define CONSTANT      0
CONSTANT = 1

我想知道的是,此函数只能采用在编译时设置的值。但是由于布尔值只能采用两个不同的值,因此这意味着您的有效负载只能具有两个不同的值。我们将布尔类型的变量称为option。您可以这样实现:

const char option_1 = '0';
const char option_2 = '1';

PubSubClient client;

...
if(option == 0)
{
    client.publish(&topic, &option_1);
}
else
{
    client.publish(&topic, &option_2);
}
...

或更短,像这样:

...
client.publish(&topic, option ? &option_2 : &option_1);
...

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.