使字符串等于字符

making a string word equal to a char?

本文关键字:字符 于字符 字符串      更新时间:2023-10-16

只是想知道这是否可能,

当按下输入按钮时,我想要一个等于字符的字符串输入。

所以在顶部我定义了WLAN_SSID

#define WLAN_SSID       "abc"

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

String input = "abcdefg";

在我的代码下面的某个地方:

char *ssid = WLAN_SSID;  

我需要*ssid保持为char,但有没有办法使其等于字符串"input"?

感谢

您当然不能将WLAN_SSID分配给char*,因为字符串文字的类型是char const[N](具有合适的N),它很乐意衰减为char const* s,但拒绝分配给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);

首先需要为char[]分配空间。

ssid = malloc(sizeof(char) * (input.length() + 1));

然后您需要使用String::toCharArray()将字符复制到缓冲区中。

input.toCharArray(ssid, input.length());

然后,当您完成ssid时,您需要丢弃为其分配的内存。

free(ssid);

在重用ssid之前,您可能还需要丢弃它的原始值,但我对Arduino的了解还不够。