Char vergleichen
-
Hallo zusammen,
bin neu hier und Umsteiger von .NET Sprachen. Habe jetzt mal etwas rumgespielt um mich in C++ einzufinden. Da kam mir nach kurzer Zeit ein Fehler entgegen, den ich so nicht kenne. Schaut mal:string xStr = "Test"; int ii = 0; if (xStr[ii] == "X") { //bla blub }
Fehler: ISO-C++ verbietet Vergleich zwischen Zeiger und Ganzzahl [-fpermissive]
Was mach ich falsch ?
Thx
-
Es muss lauten
if (xStr[ii] == 'X')
"X" ist ein String, 'X' ist ein Character.
-
"X"
ist eigentlich ein String-Literal, folgernd also zuerst einmal ein char-Array.Dieses Array hat die Größe 2 ('X' und das Terminierungszeichen). Dank dem Array-to-Pointer decay wird daraus ein Zeiger, sobald wir es vergleichen wollen. Ein Zeiger auf das erste Element. Was du also theoretisch (!) schreiben könntest:
if(xStr[ii] == *"X")
viel einfacher ist es aber, direkt ein Character-Literal daraus zu machen, und statt double-quotes (") single-quotes (') zu nehmen.