使字符串单词等于char?

时间:2013-12-14 19:28:41

标签: c++ arduino arduino-ide

只是想知道这是否可行,

当按下输入按钮时,我希望字符串输入等于char。

所以在顶部我定义了WLAN_SSID

#define WLAN_SSID       "abc"

我还初始化了输入,该输入根据设备上按下的按钮而变化。

String input = "abcdefg";

以及我所拥有的代码中的某处:

char *ssid = WLAN_SSID;  

我需要* ssid保留为char,但无论如何都要使它等于String'输入'?

感谢

2 个答案:

答案 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的了解还不够。