Comment utiliser enum avec la saisie de l'utilisateur en c++
Im faisant une simple roche papier ciseaux jeu et j'ai besoin d'utiliser l'énumération structure de données.
Mon problème est que je ne peut pas compiler le code suivant en raison d'une défaillance de la conversion de int (userInput) à Jette (userThrow).
enum Throws {R, P, S};
int userInput;
cout << "What is your throw : ";
cin >> userInput;
Throws userThrow = userInput;
Aider?!
- Les utilisateurs doivent entrer un nombre entier avec cette...
- Voulez-vous des utilisateurs à entrer des lettres ou des chiffres?
- le point de ce qui est à l'entrée R, P ou S. Que recommandez-vous pour accomplir cette?
- bien lire dans un char, et d'écrire un interrupteur de mise en cas de bloc
Vous devez vous connecter pour publier un commentaire.
R, P et S sont techniquement maintenant des identificateurs pour les chiffres (0, 1 et 2, respectivement). Votre programme maintenant ne sais pas qui que 0, 1 et 2 une fois mappés à des lettres ou des chaînes.
Au lieu de cela, vous devez prendre l'entrée manuellement et de le comparer à "R", "P" et "S" et s'il correspond à une, ensemble la
userThrow
variable en conséquence.Vous pouvez le faire comme ceci:
enum en C++ sont juste des constantes entières. Ils sont résolus au moment de la compilation et de la transformée en nombres.
Vous devez remplacer la
>>
à l'exploitant de fournir une conversion correcte par la recherche de la bonne enum élément. J'ai trouvé cette lien utile.Fondamentalement, vous lire un int à partir de stdin et l'utiliser pour construire une
Throws
élément à l'aide deThrows(val)
.Si, au lieu de cela, vous voulez saisir directement la représentation de l'enum champ en plaçant en entrée de la chaîne alors qu'elle n'existe pas par lui-même, vous devez le faire manuellement, car, comme dit au début, une énumération de noms de disparaître au moment de la compilation.
Essayez ceci:
Depuis les énumérations sont traités comme des entiers par le compilateur, vous devez définir manuellement le nombre entier chaque énumération correspond au code ASCII, puis jeté à l'entrée entière à votre énumération.
Vous pouvez essayer ceci:
Si vous ne voulez pas assigner l'utilisateur des données d'entrée, tout simplement vous souhaitez vérifier, puis utilisez code ci-dessous
si vous souhaitez affecter userinput dans votre Enum puis utilisez le code suivant
ici, vous choisissez R ou P ou S, basée sur les besoins.