string odp;
string slowo;
if(odp == slowo[0])
robisz coś takiego. Porównujesz cały string z pojedyńczym charem.
Możesz poprawic ten kawalek funkcji w ten sposób:
else if (odp.length() == 1)
{
//tutaj juz wiesz ze uzytkownik zgaduje literke a nie haslo
//jesli haslo bylo 1-iterowe to nie weszlibysmy tutaj
char literka = odp[0];
for (int i = 0; i < slowo.length(); i++)
{
if (literka == slowo[i])
{
cout << literka;
}
else
{
cout << "_ ";
}
}
}