c++ - 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')
解决方案
如果您使用相等运算符比较数组和指针,那么您是在比较它们是同一个数组还是指向同一个对象。您不是在比较数组或指向元素的内容。由于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)
推荐阅读
- reactjs - 如何从 React Child 路由导航回父级
- gluon-mobile - Gluon TextField 更新问题 Android 10
- javascript - 单击html按钮时如何使用外部javascript文件调用函数?
- laravel - 产量和包括不是在laravel工作?
- cypress - Cypress - 查找包含具有特定属性的另一个元素的元素
- algorithm - 列出三角形内的积分平面点
- java - Spring security Basic Authentication - 401 Unauthorized with correct credentials
- html - 在 Angular 中创建动态表单的问题
- node.js - Docker 卷:ENOENT:没有这样的文件或目录,打开 '/app/package.json'
- html - 如何递归地选择类内的所有前置元素?