【问题标题】:If statement is not evaluating correctly [duplicate]如果语句未正确评估[重复]
【发布时间】:2014-07-02 06:33:20
【问题描述】:

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

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

每次我为argv[1] 输入“打印”时,它都认为我输入了其他内容。我试着放了

cout << argv[1];

并且输出是打印。那为什么不行呢?

【问题讨论】:

  • 您在比较指针,而不是它们指向的数组。
  • 尝试将printex 定义为:std::string printex = "print";

标签: c++ arrays if-statement argv


【解决方案1】:

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

if( strcmp( argv[1], printex) == 0 )
 //mathced

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      相关资源
      最近更新 更多