Member NFOC Ответов: 2

Почему этот код выдает результат как false, даже если строки одинаковы?


Я дал двум строкам одинаковые значения, но все равно это говорит о том, что условие ложно.

Что я уже пробовал:

char s[] = "hello", t[] = "hello";

	std::cout << "s: " << s << std::endl;
	std::cout << "t: " << t << std::endl;

	std::cout << (s == t ? "true" : "false") << std::endl;

2 Ответов

Рейтинг:
16

Eric Lynch

Вы сравниваете адрес двух массивов символов, а не их содержимое. Либо переключитесь на std::string, либо используйте strcmp, см. обсуждение здесь:

Сравнение значений массивов символов в C++ - Stack Overflow[^]


Рейтинг:
1

Patrice T

Это происходит потому, что не так сравниваются строки.
в s == t, вы сравниваете адреса обеих строк, и они всегда разные.