• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed enum class c++

VPS Starter Arubacloud
+1 głos
232 wizyt
pytanie zadane 17 czerwca 2021 w C i C++ przez Eriss69 Gaduła (4,470 p.)
zamknięte 17 czerwca 2021 przez Eriss69

Siemka!,

Załóżmy, ze mamy

 

int main()
{
    std::cout << "[1] Register" << std::endl;
    std::cout << "[2] Login" << std::endl;
    int choice;
    switch (choice)
    {
        case 1:
        {
            std::cout << "login \n";
            break;
        }
        case 2:
        {
            std::cout << "regis \n";
            break;
        }
    }
    
}

Chciałbym użyć enum class w taki sposób:

int main()
{
    enum class loginsys
    {
        login,
        regis
    };
}

Lecz jak dac możliwość użytkownikowi wyboru pomiędzy opcja 1 a 2?

Czytałem na Stack Overflow coś tam ale tam jest na sztywno to wprowadzone:

#include <iostream>

enum class E
{
    A,
    B
};

int main()
{
    E e = E::A;

    switch (e)
    {
    case E::A:
        std::cout << "A\n";
        break;
    case E::B:
        std::cout << "B\n";
        break;
    }
}

output: "A"

chciałbym stworzyć to tak żeby użytkownik mógł wybrać pomiędzy 1 a 2 gdyż w późniejszym kodzie mam więcej tych opcji i chciałbym to jakoś nazwać ładnie ..

 

komentarz zamknięcia: SOLVE
komentarz 17 czerwca 2021 przez j23 Mędrzec (194,920 p.)

Chodzi Ci o to, jak wartość z std::cin przekazać do switch?

int e;

std::cin >> e;

switch (static_cast<E>(e)) { ... }

 

komentarz 17 czerwca 2021 przez Eriss69 Gaduła (4,470 p.)
tak tak

1 odpowiedź

0 głosów
odpowiedź 17 czerwca 2021 przez TOM_CPP Pasjonat (22,640 p.)
edycja 17 czerwca 2021 przez TOM_CPP
 
Najlepsza

Problemem jest tutaj wczytanie do strumienia std::cin wartości typu class enum. Możesz to zrobić używając przeładowania operatora >>.

#include <iostream>

using namespace std;

enum class Type { NotDefined = 0 , Register = 1 , Login = 2 };

istream& operator>>( istream& in , Type& entry )
{
    int int_entry;   
    entry = ( in >> int_entry ) ? static_cast<Type>(int_entry) : Type::NotDefined;
    in.clear();
    in.ignore();
    return in;
}

int main()
{
    Type entry;

    cout << "[1] Register\n";
    cout << "[2] Login\n";

    do{ cin >> entry; }while( entry == Type::NotDefined );

    switch( entry )
    {
        case Type::Login:
            cout << "Login\n";
        break;
        case Type::Register:
            cout << "Register\n";
        break;
        default:
            cout << "Not defined type\n";
        break;
    }
}

 

komentarz 17 czerwca 2021 przez Eriss69 Gaduła (4,470 p.)
ale ten program prosi 2 razy o wprowadzenie czegos... sprawdzales?
Tzn, że po odpaleniu prorgramu 2 razy musze wpisac "1" zeby wybrac opcje register
komentarz 17 czerwca 2021 przez Eriss69 Gaduła (4,470 p.)
....
komentarz 17 czerwca 2021 przez Eriss69 Gaduła (4,470 p.)
Rozwiązane dziekuje!!!!!!!!

Podobne pytania

0 głosów
1 odpowiedź 198 wizyt
pytanie zadane 18 października 2020 w C i C++ przez NewEraOfPeace Gaduła (4,790 p.)
0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 18 marca 2020 w C i C++ przez dal'sharum Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 100 wizyt
pytanie zadane 16 maja 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)

92,455 zapytań

141,263 odpowiedzi

319,100 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...