Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

279
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!