比较作为char **的字符串

时间:2010-12-11 16:06:02

标签: c++ c string char string-comparison

int main( int argc, char ** argv ) 
{
   if ( *argv[2] == *argv[3]) { ... }
   return true;
}

这是错的,不是吗?!

这不是我的代码,我找到了,是的,我知道我们应该检查我们是否有超过2个等级......

5 个答案:

答案 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 conditionargv[2]以相同的字母开头,则argv[3]将为真,因为您比较了两个字符串的第一个字符。如果您想比较整个字符串,请使用strcmp

还有2个建议: 当你处理参数时总是检查他们的计数(argc)。 退出主线程时,如果一切正常,标准将返回0。