我有两个变量:
char charTime[] = "TIME";
char buf[] = "SOMETHINGELSE";
我想检查这两个是否相等......使用charTime == buf
不起作用。
我应该使用什么,有人可以解释为什么使用==
不起作用?
这个行为在C和C ++中会有所不同吗?
答案 0 :(得分:20)
char charTime[] = "TIME"; char buf[] = "SOMETHINGELSE";
C ++ 和 C (删除std::
代表C):
bool equal = (std::strcmp(charTime, buf) == 0);
但真正的C ++方式:
std::string charTime = "TIME", buf = "SOMETHINGELSE";
bool equal = (charTime == buf);
使用==
不起作用,因为它试图比较每个数组的第一个字符的地址(显然,它们不相等)。它不会比较两个数组的内容。
答案 1 :(得分:2)
在c中你可以使用string.h中的strcmp函数,如果它们相等则返回0
#include <string.h>
if( !strcmp( charTime, buf ))
答案 2 :(得分:1)
在使用==
的表达式中,char
数组的名称衰减为char*
,指向其各自数组的开头。然后根据指针本身的值而不是数组的实际内容执行比较。
==
仅对指向同一位置的两个指针返回true,否则返回false,即使它们指向两个内容相同的数组。
您需要的是标准库函数strcmp
。如果数组包含相同的内容(最终为strcmp
的两个数组中必须存在的终止空字符才能安全地工作),此表达式的计算结果为true。
strcmp(charTime, buf) == 0
答案 3 :(得分:0)
在for循环中检查它们。获取每个字符的ASCII数字,一旦它们改变它们就不相等。
答案 4 :(得分:0)
您正在检查身份charTime
和buf
。要检查相等性,请遍历一个数组中的每个字符,并将它们与另一个数组中的相关字符进行比较。