Hallo,
In Delphi habe ich z.B. folgende Abfrage:
if (x in [0…9, 20…29]) then
Nun suche ich auch eine Abfrage unter C++. Natürlich könnte
man auch eine AND Abfrage machen, aber sowas wie „IN“ wäre mir
lieber.
Gibt es sowas?
Sowas gibt es nicht, man kann es sich aber leicht
selber basteln.
Auf die schnelle wäre das so möglich:
#include
#include
...
...
...
int main()
{
int x=8;
if( InRange( x ) ["0..9, 20..29"] )
printf("%d ok\n", x);
else
printf("%d nicht ok\n", x);
return 0;
}
D.h., wir basteln uns eine Klasse „InRange“,
die die Rangiererei mehr oder weniger gut
übernimmt. Nun fehlt nur noch eben diese Klasse.
Eine Variante wäre ein Quick-hack dieser Klasse:
class InRange {
int a, b, v;
public: InRange(int x) : v(x) {}
bool operator[] (char \*s) {
char buf[256], \*p=strtok(strcpy(buf, s), ", ");
while( p != NULL ) {
if( sscanf(p, "%d..%d", &a, &b)==2 && (v\>=a && v
**welche zwar ordentlich funktioniert, aber aus ver-
schiendenen Gründen nich so "schön" aussieht. Aber
da das Interface stimmt, kann man die Innereien der
Klasse später noch verbessern, während das restliche
Programm unverändert bleibt.
Ausserdem kann man diese Klasse in einer header-Datei
(z.B. InRange.h) verstecken und immer bei Bedarf
per #include "InRange.h" einbinden.
Grüße
CMБ**