只是想知道这是否可行,
当按下输入按钮时,我希望字符串输入等于char。
所以在顶部我定义了WLAN_SSID
#define WLAN_SSID "abc"
我还初始化了输入,该输入根据设备上按下的按钮而变化。
String input = "abcdefg";
以及我所拥有的代码中的某处:
char *ssid = WLAN_SSID;
我需要* ssid保留为char,但无论如何都要使它等于String'输入'?
感谢
答案 0 :(得分:1)
您当然无法将WLAN_SSID
分配给char*
,因为字符串文字的类型为char const[N]
(具有合适的N
)衰减到char const*
但拒绝分配到char*
s。如果您确实需要处理char*
,则需要分配足够的空间并将值复制到此内存中。当然,在更改它时,您还需要适当地释放内存。例如
char* make_ssid(char const* value) {
static std::unique_ptr<char[]> memory;
std::size_t n = strlen(value);
memory.reset(new char[n + 1]);
strncpy(memory.get(), value, n + 1);
return memory.get();
}
char* ssid = make_ssid(WLAN_SSID);
答案 1 :(得分:0)
首先,您需要为char[]
分配空间。
ssid = malloc(sizeof(char) * (input.length() + 1));
然后你需要使用String::toCharArray()
将字符复制到缓冲区中。
input.toCharArray(ssid, input.length());
然后,当你完成ssid
时,你需要丢弃你为它分配的内存。
free(ssid);
您可能还需要在重复使用之前丢弃ssid
的原始值,但我对Arduino的了解还不够。