C++中指针与int类型的比较
pointer comparision with int type in c++
我执行了以下程序:./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]
指向与字符串文字不同的数组,因此无论内容如何,它们都比较不相等。
tried executing: if(&argv[1] == "w")
现在,您正在将 char**
与 const char*
进行比较(在数组衰减之后)。比较不相关类型的指针没有多大意义。
if(argv[1]=='w')
.
现在,您正在比较 char*
和 char
。比较指向 char 的指针没有多大意义。
要比较两个字符串的内容,一个好的解决方案是使用字符串视图作为其中一个或两个操作数。这是一个小改动:
using namespace std::literals;
if (argv[1] == "w"sv)
行
if (argv[1] == "w")
相当于
char const* p1 = argv[1];
char const* p2 = "w";
if ( p1 == p2 )
即您正在比较两个指针,而不是指针指向的字符串。
您可以使用 std::strcmp
。但是,由于您使用的是 C++,您还不如使用 std::string
.
if (std::string(argv[1]) == "w")
如果你能使用 C++17,你也可以使用 std::string_view
。
if (std::string_view(argv[1]) == "w")
我执行了以下程序:./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]
指向与字符串文字不同的数组,因此无论内容如何,它们都比较不相等。
tried executing:
if(&argv[1] == "w")
现在,您正在将 char**
与 const char*
进行比较(在数组衰减之后)。比较不相关类型的指针没有多大意义。
if(argv[1]=='w')
.
现在,您正在比较 char*
和 char
。比较指向 char 的指针没有多大意义。
要比较两个字符串的内容,一个好的解决方案是使用字符串视图作为其中一个或两个操作数。这是一个小改动:
using namespace std::literals;
if (argv[1] == "w"sv)
行
if (argv[1] == "w")
相当于
char const* p1 = argv[1];
char const* p2 = "w";
if ( p1 == p2 )
即您正在比较两个指针,而不是指针指向的字符串。
您可以使用 std::strcmp
。但是,由于您使用的是 C++,您还不如使用 std::string
.
if (std::string(argv[1]) == "w")
如果你能使用 C++17,你也可以使用 std::string_view
。
if (std::string_view(argv[1]) == "w")