Switch - tekst jako case

0

Wiem, że można tylko pojedyncze znaki i liczby używać, ale czy istnieje jakaś podobna instrukcja do używania jak case tekstu?
Można ifami, ale dużo z tym roboty.

0

O ile mi wiadomo nie jest możliwe stworzenie switch z stringiem

0

Mi też to wiadomo, ale czy istnieje jakaś instrukcja zamiast switch korzystająca ze stringa?

0

Wymyśliłem coś takiego, ale nie działa, bo w case nie może być funkcja ;/ Więc zostaje napisać sobie 2 program do zamiany (już napisałem tą funkcję) string'a na int i podstawienie w kodzie int, który ma reprezentować string'a. Kod:

int strtoint(string str)
{
    int integer = 0;
    for (int i = 0; i < str.length(); i++)
    {
        integer += int(str[i]);
    }
    return integer;
}

int main()
{
    string str;
    int integer = 0;

    cin >> str;
    for (int i = 0; i < str.length(); i++)
    {
        integer += int(str[i]); //dodaję każdy znak do integer'a, który zamieniam na int ze string'a
    }
    switch(integer) //i dzięki temu tu mam liczbę
    {
        //case strtoint("kot"): cout << "kot"; break; //to niestety nie działa
        case 123: (...)  //czyli zamieniony string na int
    }
    return 0;
}

Nie wiem, może się da inaczej, ale na razie tyle tylko wymyśliłem i trzeba ręcznie wpisywać case, ale z samym switch'em działa.

0

Nie napisałeś jaki język, więc można używać stringów w switch w Javie od JDK 7.
W C++ po case zawsze musi stać stała wartość typu podstawowego (chyba, że się mylę).

1

Oczywiście, że można używać stringów w case.

A jaki jest cel? Bo może można pozbyć się instrukcji warunkowej i użyć słownika.

0

Zgodnie ze standardem w case mogą być tylko prymitywy, ale z tego co pamiętam to GCC dopuszcza również stringi.

0

Swego czasu popularny był język Clipper. Dopuszczał jako case dowolny warunek:

   case x>y
    ...
   case z="słoń"
    ...

Bardzo to było wygodne.

0

Scala ma Pattern Matching i zamiata resztę pod dywan ;) (tzn resztę nie posiadającą tego)

0

W Ruby możesz używać nawet typów obiektów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1