int main( int argc, char ** argv )
{
if ( *argv[2] == *argv[3]) { ... }
return true;
}
这是错的,不是吗?!
这不是我的代码,我找到了,是的,我知道我们应该检查我们是否有超过2个等级......
答案 0 :(得分:3)
对于C ++,从每个参数构造std::string
,然后使用operator==
进行比较。
对于C使用strcmp
。
对于两者,请在执行此检查之前检查argc >= 4
。
答案 1 :(得分:2)
请改为尝试:
#include <string>
int main( int argc, char ** argv )
{
if (argc >= 4 && std::string(argv[2]) == std::string(argv[3])) { ... }
return 0;
}
答案 2 :(得分:1)
使用strcmp
,请参阅此处:
如果需要,可以将string
类用于纯C ++,请参见:
答案 3 :(得分:1)
是的,这是错的。
您需要strcmp
。
答案 4 :(得分:0)
这是一个完全有效的代码,但它可能不会达到您所期望的效果。
如果If condition
和argv[2]
以相同的字母开头,则argv[3]
将为真,因为您比较了两个字符串的第一个字符。如果您想比较整个字符串,请使用strcmp
。
还有2个建议: 当你处理参数时总是检查他们的计数(argc)。 退出主线程时,如果一切正常,标准将返回0。