C++ 如何修复此错误?(arduino铸造)

C++ 如何修复此错误?(arduino铸造),c++,arduino,C++,Arduino,我使用的是一个由rinkydinkelectronics开发的名为DS3231的库 链接:(点击手册) 我正在尝试运行以下代码 String alarmTime = "08:52:00"; void loop(){ if (rtc.getTimeStr() == alarmTime){ alarmState = true; } } 但我得到了以下错误: 退出状态1与“operator==”不匹配(操作数类型为“c

我使用的是一个由rinkydinkelectronics开发的名为DS3231的库 链接:(点击手册)

我正在尝试运行以下代码

String alarmTime = "08:52:00";

        void loop(){
           if (rtc.getTimeStr() == alarmTime){
           alarmState = true;
          }
}
但我得到了以下错误:

退出状态1与“operator==”不匹配(操作数类型为“char*”和 '字符串')

然而,库手册说返回值是一个字符串,所以我不明白为什么这不起作用:(

有人能帮我解决这个问题或告诉我可能出了什么问题吗


谢谢!

如果您正确理解了代码,您需要检查两个字符串是否相等。由于Arduino IDE中没有标准库,您必须选择其他方式。请将C字符串(
char*
)转换为a

例如:

if(String(rtc.getTimerStr()) == alarmTime) {
    ....
}

这应该行得通。

您正在尝试比较两个名称相似的不同事物。A(C样式字符串)是以null结尾的字符数组。这与不同。通常认为,对于内存极其有限的硬件(如标准Arduino板),如果可能,应避免使用String类,因为它会使用更多内存,并可能会因动态内存分配而导致内存碎片。使用String更好,实际上,它们和字符串一样容易操作

您的代码仅使用字符串:

char alarmTime[]=“08:52:00”;
void循环(){
if(strcmp(rtc.getTimeStr(),alarmTime)==0){
alarmState=true;
}
}

<代码>包裹返回代码<> STD::String(…)>代码>我不明白你的意思,抱歉,我有点新的意思。你能告诉我你的意思吗?我会发布一个答案。但是请继续练习C++代码…@ R. Arduino。
可能会起作用。当我将alarmTime声明为:std::String alarmTime=“08:52:00”时,我得到一个错误:“‘std’名称空间中的‘String’没有命名类型”刚刚测试了它,它工作得很好。非常感谢!当然。继续编码!:3