2014-11-03 5 views
0

Я хочу, чтобы сравнить две строки, чтобы увидеть, если они одинаковы, не равно, больше, меньше и т.д. Я следующий код:C++ Строка сравнения Возвращает 0, но Boolean возвращает ложь

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) - Изменить [Невозможно воспроизвести.]: Er, подождите минута. 1 не является ложным. –

+0

Почему бы не просто «вернуть запрос _record ==», если вам все равно меньше или больше? –

ответ

3

Использование cout Я замечаю, что значение возвращает int, равное нулю. Однако, когда я сравниваю значение с нолем, он возвращает 1 (false).

Это правильно, за исключением последнего бита: bool(1) является true, не false.

Другими словами, 0 действительно равно 0.

P.S. Вы можете переписать свою функцию на return _record == query.

1

Вы сравниваете от 0 до 0 и получить ИСТИНА (1) назад, потому что 0 равно 0

Смежные вопросы