比较字符和字符串
Comparing Char to String
我目前正在做一个大学项目,我的大部分背景来自 JS 和 Python。我有一个正在接收数据并使用 ArduinoJSON 接收设置并反序列化它们的 Arduino。我已将其设置为 const char* setting
。其中可以包含一系列数据类型(主要是 int 或 bool)。但我专注于尝试从 char 中获取 bool 值。
setting = doc["setting"];
if (setting == "true") {
test = true;
} else if (setting == "false") {
test = false;
}
我尝试了上面的方法,但没有成功。我也尝试将 char 转换为字符串,但没有成功。我也尝试过使用 .compare() 函数,但也不走运。你们会推荐什么?
对于 const char*
,==
运算符将比较指针值而不是文本值(由于数据存储在不同位置,文本值通常总是不同的)。您可以将其更改为:
if (strcmp(setting, "true") == 0) { test = true; }
else if (strcmp(setting, "false") == 0) { test = false; }
而不是让事情正常进行。或者,您可以在进行比较之前将设置转换为 String
,这也应该有效:
String setting = String(doc["setting"]);
if (setting == "true") { test = true; }
else if (setting == "false") == 0) { test = false; }
我目前正在做一个大学项目,我的大部分背景来自 JS 和 Python。我有一个正在接收数据并使用 ArduinoJSON 接收设置并反序列化它们的 Arduino。我已将其设置为 const char* setting
。其中可以包含一系列数据类型(主要是 int 或 bool)。但我专注于尝试从 char 中获取 bool 值。
setting = doc["setting"];
if (setting == "true") {
test = true;
} else if (setting == "false") {
test = false;
}
我尝试了上面的方法,但没有成功。我也尝试将 char 转换为字符串,但没有成功。我也尝试过使用 .compare() 函数,但也不走运。你们会推荐什么?
对于 const char*
,==
运算符将比较指针值而不是文本值(由于数据存储在不同位置,文本值通常总是不同的)。您可以将其更改为:
if (strcmp(setting, "true") == 0) { test = true; }
else if (strcmp(setting, "false") == 0) { test = false; }
而不是让事情正常进行。或者,您可以在进行比较之前将设置转换为 String
,这也应该有效:
String setting = String(doc["setting"]);
if (setting == "true") { test = true; }
else if (setting == "false") == 0) { test = false; }