Abfragen ob Wert in Menge
-
Hey,
Ich suche eine Möglichkeit um abzufragen, ob eine Variable den Wert 0-9 oder ein Komma hat. In Delphi ging das so:
If Key in ['0'..'9', ','] then bla
Ich könnte natüelich mehrere OR benutzen, aber ob das so toll ist? Wäre cool wenn jmd ne Lösung hätte (:
-
In dem konkreten Fall
if ((Key >= '0' && Key <= '9') || Key == ',')
Generell für die Abfrage von Werten aus einer Menge gibt es die Klasse Set (bzw. std::set).
-
Frolo schrieb:
In Delphi ging das so:
Die exakte Entsprechung wäre
const TSysCharSet decimalCharSet = TSysCharSet () << '0' << /*...*/ << '9' << ','; if (decimalCharSet.Contains (Key))
Der Vorschlag von Th69 ist in C++ aber viel schöner.
Außerdem solltest du den Dezimalseparator nicht hartkodieren, der kann je nach Systemeinstellung variieren. Besser wäre es, du nähmest std::isdigit() (für 0-9) und verglichest außerdem mit
DecimalSeparator
. Aber am besten nimmst du TryStrToFloat(), das kümmert sich um die ganzen Details und erlaubt auch andere Zahlenformate (etwa die Exponentialdarstellung).