2012-10-30 18 views
5

Hey Ich wollte wissen, wie Sie ein Zeichen '+' in einen Operator verwandeln können. Zum Beispiel, wenn ich habeChar zu Operator C++

char op = '+' 
cout << 6 op 1; 

Dank.

+3

Mit einer Karte, 'cout << Operatoren [op] (6, 1);' – chris

+1

Wenn Sie die '6 op 1 'Syntax halten wollen, dann nein, es ist nicht möglich . –

+0

Denken Sie über kompilierte Anweisungen und Laufzeitdaten nach. –

Antwort

6

einfache Art und Weise ist eine switch-Anweisung verwenden

switch (op) 
{ 
case '+': 
    res = x + y; 
    break; 
case '-': 
    res = x - y; 
    break; 
case '*': 
    res = x * y; 
    break; 
} 
3

Ich glaube nicht, gibt es einen Weg, wie Sie es dort geschrieben haben, aber man könnte etwas hacky wie

int do_op(char op, int a, int b) 
{ 
    switch(op) 
    { 
    case '+': 
     return a+b; 
    break; 
    case '-': 
     return a-b; 
    break; 
    case '*': 
     return a*b; 
    break; 
    case '/': 
     return a/b; 
    break; 
    default: 
     throw std::runtime_error("unknown op") 
    } 
} 
+5

gültigen Vorschlag, bu das ist alles andere als Hacky. –

+0

Nun, nein, aber ich fühle, dass es nicht wirklich zur Wurzel der OP-Frage kommt. – Dan

+0

Ja, ich dachte, Schalter wäre der Weg zu gehen, aber dachte, es könnte einen einfacheren Weg gegeben haben. – wzsun

0

Sie tun können verwenden sie einen alten Weg #define:

#define op + 
std::cout << 6 op 1; 

aber es Verwendung beschränkt ist.

Wenn Sie dies in reinem C++ tun wollen, müssen Sie die Switch-Syntax entweder explizit oder in einer externen Bibliothek verwenden (wie tetzfamily.com/temp/EvalDoc.htm oder codeproject.com/Articles/7939/C- based-Expression-Evaluations-Bibliothek)).

Eine andere Möglichkeit ist ein externes Programm, wie bc zu verwenden:

char op = '+'; 
std::string s; 
s += "6"; 
s += op; 
s += "4"; 
system(("echo " + s + "|bc").c_str()); 

Wenn Sie später das Ergebnis verwenden möchten, überprüfen Sie die popen Funktion oder die C++ equivalent.

0
public class ArithmeticOps { 

    static int testcase11 = 11; 
    static int testcase12 = 3; 
    static char testcase13 = '/'; 

    public static void main(String args[]){ 
     ArithmeticOps testInstance = new ArithmeticOps(); 
     int result = testInstance.compute(testcase11,testcase12,testcase13); 
     System.out.println(result); 
    } 


public int compute(int a, int b,char operator){ 
    int i=0; 
    switch(operator) 
    { 

    case '+' : 
     i= a+b; 
     break; 
    case '-' : 
     i= a-b; 
     break; 
    case '*' : 
     i= a*b; 
     break; 
    case '/' : 
     i= a/b; 
     break; 
    case '%' : 
     i= a%b; 
     break; 
    case '^' : 
     i= a^b; 
     break; 
    default: 
     i=0; 
    } 
    return i; 


} 

}

+0

Dies umfasst alle arithmetischen Operationen. – user2722684