我想知道在C++中,使用strcmp
或简单地使用==
比较两个字符数组时,我的代码都能完美运行。有人可以为什么要使用strcmp
而不是==
来进行解释吗?
strcmp
比较两个实际的 C 字符串
的内容,而在两个 C 字符串
之间使用 ==
是在询问这两个 char
指针是否指向相同的位置。
如果我们有以下定义的一些 C 字符串
:
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++
版本的 strcmp
。
==
和strcmp
工作良好吗? - user289086