为什么在C ++中使用strcmp而不是==?

时间:2014-03-22 03:13:38

标签: c++ strcmp

我想我的代码在C ++中使用strcmp或简单==来比较2个char数组时效果很好。任何人都可以证明使用strcmp代替==;

的原因

2 个答案:

答案 0 :(得分:12)

strcmp会比较实际的C-string内容,而在==之间使用C-string会询问这两个char指针是否指向相同的位置。< / p>

如果我们将C-string定义为以下内容:

char string_a[] = "foo";
char string_b[] = "foo";
char * string_c = string_a;

strcmp(string_a, string_b) == 0将返回true,而string_a == string_b将返回false。只有在使用string_a“比较”string_c==时才会返回true

如果您想比较两个C-string的实际内容,而不是它们是否只是彼此的别名,请使用strcmp

附注:如果您使用C++代替C,则问题代码会显示,那么您应该使用std::string。例如,

std::string string_d = "bar";
std::string string_e = "bar";

然后string_d == string_e将返回truestring_d.compare(string_e)会返回0,这是C++的{​​{1}}版本。

答案 1 :(得分:1)

使用strcmp的一个好处是......它会返回 &LT;如果str1小于str2,则为0

  如果str1大于str2,则

0   如果它们相等则为0。

但是如果你只使用==它只会返回true或false。