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

Faw*_*sim 7 c++ strcmp

我想我的代码可以完全正常使用strcmp或只是==在C++中比较2个char数组.任何人都可以证明使用的原因strcmp而不是==;

WiS*_*GaN 12

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

如果我们有一些C-string定义如下:

char string_a[] = "foo";
char string_b[] = "foo";
char * string_c = string_a;
Run Code Online (Sandbox Code Playgroud)

strcmp(string_a, string_b) == 0会回来true,而string_a == string_b会回来false.只有在"比较" string_astring_c使用时==才会返回true.

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

对于附注:如果您使用的是C++代替C问题标签显示,那么您应该使用std::string.例如,

std::string string_d = "bar";
std::string string_e = "bar";
Run Code Online (Sandbox Code Playgroud)

然后string_d == string_e会回来true.string_d.compare(string_e)将返回0,这是C++版本strcmp.

  • 由于写了一个展示OP的例子,+1打败了我.因为你已经完成了这一切,所以不需要写另一个答案,只是要离开示例[这里](http://coliru.stacked-crooked.com/a/ce953c82def955ae)(变量重命名为你的版本). (2认同)