【问题标题】:Comparing Char to String [duplicate]将字符与字符串进行比较 [重复]
【发布时间】:2021-07-10 23:49:05
【问题描述】:

我目前正在做一个大学项目,我的大部分背景来自 JS 和 Python。我有一个 Arduino,它正在接收数据并使用 ArduinoJSON 接收设置并反序列化它们。我已将设置设置为const char* setting。其中可以包含一系列数据类型(主要是 int 或 bool)。但我专注于尝试从 char 中获取 bool 值。

setting = doc["setting"];
if (setting == "true") {
  test = true;
} else if (setting == "false") {
  test = false;
}

我尝试了上述方法,但没有成功。我也尝试将 char 转换为字符串,但没有运气。我也尝试使用 .compare() 函数也没有运气。大家有什么推荐的?

【问题讨论】:

  • == 不是比较 C 字符串的正确方法。使用strcmp 或使用C++ std::string
  • 如果要比较以空字符结尾的字符串,请使用适当的函数,例如 strcmp()。顺便说一句,如果两个测试都没有通过,test 会发生什么?会不确定吗?
  • 如果setting == "frog" 会发生什么?

标签: c++ c arduino char boolean


【解决方案1】:

使用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; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-19
    • 2012-11-27
    • 2016-07-08
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    相关资源
    最近更新 更多