Почему при сравнении двух разных строк они считаются разными?

Я использую код на подобии этого

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; 
}
→ Ссылка