Strings vergleichen

Guten Abend,
ich stehe gerade etwas auf dem Schlauch und finde meinen Fehler nicht.
Die Idee ist es 2 Strings miteinander zu vergleichen.
Der eine String ist ein konstanter und so im Code hinterlegt. - String string2 = "20:08"; -
In dem anderen String wird die aktuelle Uhrzeit gespeichert. - String string1 = String(5); -
In der loop wird dann die Zeit in string1 gespeichert, dass das funktioniert, habe ich im seriellen Monitor
anzeigen lassen.
Die beiden Strings habe ich in einer if-Abfrage miteinander verglichen.

if("string1" == "string2")
{
Serial.println("funktioniert"); 
}

Das funktioniert nun aber überhaupt nicht :confused:
Hat jemand die erleuchtende Lösung?
LG Dennis

strcmp()

Die beiden Strings habe ich in einer if-Abfrage miteinander verglichen.

Nein, hast du nicht.
Du vergleichst Adressen im Speicher, Pointer, und die sind natürlich gezwungener maßen unterschiedlich.

Tipp:
Ein schönes dickes modernes C++ Buch erwerben.

Also muss in die if-Abfrage strcmp(string1, string2) == 0?

vs
http://www.cplusplus.com/reference/cstring/strcmp/

und aufpassen:
Arduino String ist nicht gleich c++ string

Du musst die "Gänsefüßchen" in deiner Abfrage weglassen. Sonst vergleichst Du in der Tat die Pointer auf 2 unterschiedliche Stringkonstante.

MicroBahner:
Du musst die "Gänsefüßchen" in deiner Abfrage weglassen. Sonst vergleichst Du in der Tat die Pointer auf 2 unterschiedliche Stringkonstante.

Irgndwie wird die If-Abfrage so immer erfüllt und ich verstehe nicht wieso. :confused:

#include <DS1302.h>
String string1; 
String string2 = "22:05";

// Init the DS1302
DS1302 rtc(10, 9, 8);

void setup()
{
  Serial.begin(9600);
}

void loop()
{
string1 = rtc.getTimeStr(FORMAT_SHORT);

Serial.println(string1);
if(string1 == string2);
{
Serial.println("funktioniert");
}
  

delay (1000);
}

String string1;

Achso, du verwendest die String Klasse....

Das ging aus deinem ersten Quelltext nicht hervor.
Und im Text habe ich es nicht erkannt.
Tja... (sorry)

Die String Klasse bringt ihren eigenen Vergleich mit.
Für C Strings ist strcmp() richtig.

Irgndwie wird die If-Abfrage so immer erfüllt

Nein!
Wird sie nicht.

if(string1 == string2);

Was meinst du wohl, was das Semikolon dort bewirkt?
Richtig!
Dort endet die If abfrage.

combie:
Achso, du verwendest die String Klasse....

Das ging aus deinem ersten Quelltext nicht hervor.
Und im Text habe ich es nicht erkannt.
Tja... (sorry)

Die String Klasse bringt ihren eigenen Vergleich mit.
Für C Strings ist strcmp() richtig.

Nein!
Wird sie nicht.

if(string1 == string2);

Was meinst du wohl, was das Semikolon dort bewirkt?
Richtig!
Dort endet die If abfrage.

Danke, manchmal sieht man das offensichtlichste einfach nicht mehr.