args 上的 If 语句给出奇数输出

If statement on args giving odd outputs

当 运行 此代码时:./a.out 5 + 5 我应该得到 10。但我却得到 Unkown operator. 有人知道为什么会这样吗?

#include <iostream>
#include <string>
int main(int argc, char *argv[]){
    if (argv[2]=="+"){
        std::cout << std::stoi(argv[1])+std::stoi(argv[3]) << "\n";
    }
    else if (argv[2]=="-"){
        std::cout << std::stoi(argv[1])-std::stoi(argv[3]) << "\n";
    }
    else{
        std::cout << "Unkown operator." << "\n";
    }
    return 0;
}

这一行比较指针值,而不是它们指向的字符串数据...

    if (argv[2]=="+"){

要么使用 strcmp:

    if (strcmp(argv[2], "+") == 0){
    }

或者类似这样的东西:

    if (std::string(argv[2]) == "+"){
    }