Почему при сравнении двух разных строк они считаются разными?
Я использую код на подобии этого
void check(const char* str)
{
if(str == "anton")
{
std::cout << "good\n";
}
else
{
std::cout << "bad\n";
}
}
int main()
{
char str[] = "anton";
char* ptr = new char[6];
for(int i = 0;i < 5;i++)
{
ptr[i] = str[i];
}
ptr[5] = '\0';
check(ptr);
std::cout << ptr << std::endl;
}
И я имею вывод
bad
anton
Вопрос в чем проблема почему строки разные?
Ответы (1 шт):
Автор решения: Hydro_genium
→ Ссылка
Можно подключить библиотеку cstring и использовать функцию strcmp для сравнения
#include <cstring>
#include <iostream>
void check(char* str) {
if(strcmp(str, "anton") == 0)
{
std::cout << "good\n";
}
else
{
std::cout << "bad\n";
}
}
int main() {
char str[] = "anton";
char* ptr = new char[6];
for(int i = 0;i < 5;i++)
{
ptr[i] = str[i];
}
ptr[5] = '\0';
check(ptr);
std::cout << ptr << std::endl;
return 0;
}