View Full Version : [C++] switch con stringhe
grigor91
08-06-2008, 15:24
mi serve fare delle condizioni multiple su una stringa, ma switch accetta solo int. quale potrebbe essere un'alternativa? non ho proprio voglia di fare una trentina di if
mi serve fare delle condizioni multiple su una stringa, ma switch accetta solo int. quale potrebbe essere un'alternativa? non ho proprio voglia di fare una trentina di if se le stringhe sono tante (e una trentina in effetti lo sono :)) allora puoi usare un'hash table che mappa puntatori a funzioni (valori) su stringhe (chiavi). l'hash table la realizzi con la classe map delle STL:
http://www.cplusplus.com/reference/stl/map/
un esempio:
typedef bool (*HANDLER)();
bool Handler1();
bool Handler2();
bool Handler3();
.
.
.
map<const char*, HANDLER> Handlers;
Handlers["stringa1"] = Handler1;
Handlers["stringa2"] = Handler1;
Handlers["stringa3"] = Handler1;
...
dopodiché, avendo una stringa in input e volendo chiamare l'handler corrispondente, fai semplicemente:
const char *String;
.
.
.
if (Handlers[String]())
{
// l'handler ha restituito true
}
else
{
// l'handler ha restituito false
}
ovviamente non è necessario che gli handlers abbiano la signature che ho usato io in questo esempio: possono anche ritornare void e prendere tutti i parametri che ti pare.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.