C++ 使字符串字等于字符?
只是想知道这是否可能 当按下输入按钮时,我想要一个等于字符的字符串输入 因此,在顶部我定义了WLAN_SSIDC++ 使字符串字等于字符?,c++,arduino,arduino-ide,C++,Arduino,Arduino Ide,只是想知道这是否可能 当按下输入按钮时,我想要一个等于字符的字符串输入 因此,在顶部我定义了WLAN_SSID #define WLAN_SSID "abc" 我还初始化了根据设备上按下的按钮而变化的输入 String input = "abcdefg"; 在我的代码下面的某个地方: char *ssid = WLAN_SSID; 我需要*ssid保持为char,但是否有方法使其等于字符串“input” 谢谢首先,您需要为字符[]分配空间 ssid = malloc(siz
#define WLAN_SSID "abc"
我还初始化了根据设备上按下的按钮而变化的输入
String input = "abcdefg";
在我的代码下面的某个地方:
char *ssid = WLAN_SSID;
我需要*ssid保持为char,但是否有方法使其等于字符串“input”
谢谢首先,您需要为
字符[]
分配空间
ssid = malloc(sizeof(char) * (input.length() + 1));
然后需要使用将字符复制到缓冲区中
input.toCharArray(ssid, input.length());
然后,当您使用完ssid
,您需要丢弃分配给它的内存
free(ssid);
您可能还需要在重用ssid
之前丢弃它的原始值,但我对Arduino的了解还不够,无法确定。您当然不能将WLAN\u ssid
分配给char*
,因为字符串文本的类型为char const[N]
(带有合适的N
)它愉快地衰变为char const*
s,但拒绝分配给char*
s。如果确实需要处理字符*
,则需要分配足够的空间并将值复制到此内存中。当然,在更改它时,您还需要适当地释放内存。比如说
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*make_ssid(char const*value){
静态std::唯一的ptr内存;
std::size\u t n=标准长度(值);
内存重置(新字符[n+1]);
strncpy(memory.get(),值,n+1);
返回内存。get();
}
char*ssid=生成ssid(WLAN\u ssid);
@IgnacioVazquez Abrams:任何自称为“C++”的系统都必须支持上述功能,即使可能需要为缺少的标准库设施使用自定义类和函数。。。这与诺伊曼的体系结构无关:C++标准规定了功能。<代码> NeX[]/Cord>在C++中更好(如果它不被公认地在GNU-AVR工具链中被破坏)…