Existe-t-il un moyen de convertir un opérateur en tant que caractère «+» en opérateur réel pour l’arithmétique?

Comment pourrais-je convertir le caractère “+” en + pour l’addition? J’essaie de faire quelque chose qui demande à l’utilisateur d’entrer un opérateur + – * / puis d’imprimer un opérateur b.

Je pourrais juste faire un tas de déclarations si, mais je me demandais s’il y avait un moyen de le faire plus efficacement?

if (operator == "+") {cout << a + b;} else if (operator == "-") {cout << a - b;} 

etc..

Utilisez un commutateur en supposant que token est un caractère dans lequel l’opérateur et op1 et op2 sont deux opérandes:

 switch (token) { case '/': val = op1 / op2; break; case '*': val = op1 * op2; break; case '+': val = op1 + op2; break; case '-': val = op1 - op2; break; } 

Vous pouvez utiliser une carte avec des pointeurs de fonction.

 int addition(int a, int b){ return a + b; } std::map operators; operators.insert(make_pair('+', addition)); char c = getch(); int first_operand = 10; int second_operand = 20; int result = operators[c](first_operand, second_operand); 

Je crois que l’utilisation d’un commutateur est préférable dans ce cas. Sinon, la solution me semble acceptable.

Vous pouvez également utiliser une carte comme celle-ci. Je ne pense pas que l’efficacité compte beaucoup dans ce cas.

 cout << operators[op](a, b);