首页 > 解决方案 > c++中指针与int类型的比较

问题描述

我将以下程序执行为:./aout w.

#include<iostream>
using namespace std;

int main(int argc, char** argv)
{
    if (argv[1] == "w")
    {
        cout << "this was worked";
    }
    else
    {
        cout << "this did not worked";
    }
}

输出:this did not worked
我尝试执行:if(&argv[1] == "w") if(argv[1]=='w')

标签: c++argv

解决方案


如果您使用相等运算符比较数组和指针,那么您是在比较它们是同一个数组还是指向同一个对象。您不是在比较数组或指向元素的内容。由于argv[1]指向与字符串文字不同的数组,因此无论其内容如何,​​它们都比较不相等。

尝试执行:if(&argv[1] == "w")

现在,您正在与char**const char*阵列衰减后)进行比较。比较不相关类型的指针没有多大意义。

if(argv[1]=='w').

现在,您正在char*比较char. 比较指向 char 的指针没有多大意义。


要比较两个字符串的内容,一个好的解决方案是使用字符串视图作为其中一个或两个操作数。这是一个小变化:

 using namespace std::literals;
 if (argv[1] == "w"sv)

推荐阅读