C++字符串比较返回0,但布尔返回false

问题描述:

我想比较两个字符串,看看他们是相同的,不等于,大于,小于,等我有以下代码:C++字符串比较返回0,但布尔返回false

std::string _record = "adam"; 
std::string query = "adam"; 
int value = _record.compare(query); 
return value == 0; 

是什么返回的是false。使用cout我注意到value返回一个为零的int。但是,当我将value与零比较时,它返回1(false)。

为什么会发生这种情况?

+0

(http://ideone.com/iSnVlE) - 编辑[无法重现]:呃,等待一分钟。 1不是虚假的。 – 2014-11-03 19:02:47

+0

为什么不简单'返回_record ==查询;'如果你不关心更少或更大? – 2014-11-03 19:04:00

使用cout我注意到该值返回一个为零的int。但是,当我将值与零比较时,它将返回1false)。

这是正确的,除了最后一位:bool(1)true,不false

换句话说,0确实等于0

P.S.您可以将您的功能重写为return _record == query

您比较0比0和得到一个TRUE(1)回来,因为0等于0