Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

294
Visualizações
Cómo asignar una enumeración para un caso de cambio desde la cadena UserInput en C++

Estoy escribiendo este código que toma una entrada de userinput char y usa la declaración de cambio para ejecutar el comando respectivo. Sin embargo, debido a que las declaraciones de cambio C++ solo pueden leer entradas y enumeraciones, no estoy seguro de cómo incorporar esto. La entrada del usuario debe ser un carácter. ¿algunas ideas? Sé que charInput >> enumInput no funciona, pero no estoy seguro de qué hacer.

 int main(int argc, char** argv) { enum charCommand { i, d, s, n, r, a, m, t, p, l, q }; charCommand enumInput; while (mainLoop) { cout << "enter valid input" endl; char charInput; printf("Enter a command: "); cin >> charInput; charInput >> enumInput; switch (charInput) { case i: { printf("This is case i"); exit(0); } //case i default: { cout << "invalid command, try again!\n"; } } }; }
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Una forma de lograr esto es asignar el carácter real ingresado a su enum correspondiente:

 #include <map> //... int main (int argc, char** argv) { enum charCommand {i,d,s,n,r,a,m,t,p,l,q}; std::map<char, charCommand> charToEnumMap = {{'i',i}, {'d',d}, {'s',s}}; // Add the rest charCommand enumInput; while (mainLoop) { cout << "enter valid input" endl; char charInput; printf("Enter a command: "); cin >> charInput; auto iter = charToEnumMap.find(charInput); if ( iter != charToEnumMap.end() ) { switch (iter->second) { case i : { printf("This is case i"); exit(0); } //case i default: { cout << "invalid command, try again!\n"; } } } } }
over 4 years ago · Santiago Trujillo Relatório

0

No hay necesidad de una enum aquí. switch funciona con char porque char es convertible a int . Entonces, si definimos un char como tal:

 char c = 'a';

..y luego enciéndelo:

 switch (c)

Esto funciona porque 'a' se puede convertir a int (valor ASCII). Así que esto también se puede escribir como:

 switch (int(c)) // Same as switch (c)

Ejemplo:

 #include <iostream> int main(int argc, char** argv) { char input; std::cin >> input; switch (input) { case 'a': std::cout << 'a' << std::endl; break; case 'b': std::cout << 'b' << std::endl; break; case 'c': std::cout << 'c' << std::endl; break; default: std::cout << "Some other key" << std::endl; break; } }

El ejemplo anterior funciona. Para su caso, reescribiría su programa como:

 #include <iostream> int main(int argc, char** argv) { while (true) { std::cout << "enter valid input" << std::endl; char charInput; printf("Enter a command: "); std::cin >> charInput; switch (charInput) { case 'i': printf("This is case i"); exit(0); //case i default: std::cout << "invalid command, try again!\n"; break; } }; }

Además, considere no usar lo siguiente en su código:

 using namespace std;

..ya que se considera una mala práctica. Para obtener más información sobre esto, busque por qué "usar el espacio de nombres estándar" se considera una mala práctica .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda