如果语句未正确评估

时间:2014-07-02 06:33:21

标签: c++ arrays if-statement argv

我正在开发一个控制台项目,但我无法让这部分工作。

void execute(char* argv[]) {
    char* printex = "print";
    if (argv[1] == printex) {
        print(argv);
    }
    else {
        cout << "Unknown function." << endl;
    }
}

每次我输入&#34;打印&#34;对于argv[1],它认为我输入了其他内容。我试过放入

cout << argv[1];

输出打印。为什么它不起作用?

2 个答案:

答案 0 :(得分:1)

argv[1]char*printex也是std::string。比较它们将比较它们包含的地址,而不是实际的字符串。所以他们永远不会是一样的。您可以使用strcmp(更安全),或以当前形式使用if( strcmp( argv[1], printex) == 0 ) //mathced 进行比较。

{{1}}

答案 1 :(得分:1)

尝试将if (argv[1] == printex)替换为if (strcmp(argv[1], printex)==0)来比较字符串(不是字符串上的指针)。