使字符串等于字符
making a string word equal to a char?
只是想知道这是否可能,
当按下输入按钮时,我想要一个等于字符的字符串输入。
所以在顶部我定义了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的了解还不够。
相关文章:
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 从常量字符*、字符*参数到标准::字符串的直接转换接口
- C++ 中数组(单引号和双引号)的可视常量字符* 与字符
- 为什么 const int 适用于字符大括号初始化?
- 如何编写模板函数来创建给定常量字符*的字符/wchar_t字符串?
- 如何使字符*指向字符[]?
- 显式(布尔值)可以作用于字符文字参数的长度吗?
- 以简单的方式修改常量字符 * 与字符 * 内容
- 构建 NFIQ2 时从"字符"到"字符*"的转换无效
- 为什么具有单独字符的字符数组不像字符串文字那样以 null 终止符结尾?
- 答案审查 - 从"常量字符*"到"字符"的转换无效
- C++:字符* vs 字符(*)[]
- 与基本面作斗争.特别是字符[],字符*和从数组中读取.也许我应该使用类型字符串
- 从"常量字符*"到"字符*"[-允许]的转换无效;VTK-7.1.1 编译错误
- C++用字符格式化字符
- 从“常量字符*”到“字符”类错误的转换无效
- C++ 错误:与调用<类构造函数(字符*&、字符*&、字符*&、字符*&)不匹配
- 如何检查字符串值是否存在于字符数组中
- 为什么 strlen() 也适用于字符数组
- 在字符数组中包含相当于字符的十进制数