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)。
为什么会发生这种情况?
答
使用
cout
我注意到该值返回一个为零的int
。但是,当我将值与零比较时,它将返回1
(false
)。
这是正确的,除了最后一位:bool(1)
是true
,不false
。
换句话说,0
确实等于0
。
P.S.您可以将您的功能重写为return _record == query
。
答
您比较0比0和得到一个TRUE(1)回来,因为0等于0
(http://ideone.com/iSnVlE) - 编辑[无法重现]:呃,等待一分钟。 1不是虚假的。 – 2014-11-03 19:02:47
为什么不简单'返回_record ==查询;'如果你不关心更少或更大? – 2014-11-03 19:04:00