C++ String Switch

C++ String Switch

Příspěvekod Wlezley » 15 leden 2013 23:49:07

Pokud jste vyhledali toto téma, jistě už znáte switch a není třeba se tu o něm sáhodlouze rozepisovat.
Problémem u switch v jazyce C/C++ je fakt, že nedokáže přepínat řetězce (umí to např. C#).

Proto jsem napsal jednoduchou sadu maker a definicí:
RAW CODE
#define SWITCH_OPEN(input)          { const char * __switch_string__ = input;
#define SWITCH_CASE_FIRST(value) if(__switch_string__ == value) {
#define SWITCH_CASE(value) } else if(__switch_string__ == value) {
#define SWITCH_DEFAULT } else {
#define SWITCH_CLOSE }}
Princip je vážně jednoduchý. V podstatě jde o sekvenci if / else if / else.

Příklad použití (usage exaple):
RAW CODE
SWITCH_OPEN("asdfgh")
{
SWITCH_CASE_FIRST("qwerty")
std::cout << "First case...";

SWITCH_CASE("asdfgh")
std::cout << "Second case...";

SWITCH_CASE("zxcvbnm")
std::cout << "Third case...\n";
std::cout << "You can add ";
std::cout << "more lines ";
std::cout << "of source code.";

SWITCH_DEFAULT
std::cout << "default";
}
SWITCH_CLOSE;

Jediným problémem je, že každý case se de-facto automaticky breakuje, protože při volání dalšího case končí vnoření if / else if / else. Proto nelze použít společný kód pro více case (položek).
Uživatelský avatar
Wlezley
 
Příspěvky: 316
Registrován: 24 září 2011 22:54:46
Bydliště: Plzeň
Projekt: Wlezley EU

Zpět na C/C++

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


cron