我想我的代码在C ++中使用strcmp
或简单==
来比较2个char数组时效果很好。任何人都可以证明使用strcmp
代替==
;
答案 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
将返回true
。 string_d.compare(string_e)
会返回0
,这是C++
的{{1}}版本。
答案 1 :(得分:1)
使用strcmp的一个好处是......它会返回 &LT;如果str1小于str2,则为0
如果str1大于str2,则0 如果它们相等则为0。
但是如果你只使用==它只会返回true或false。