Jeśli piszesz pod Ubuntu to zapewne domyśle kodowanie edytora to UTF8. Sprawdź kodowanie konsoli(nie korzystam z Netbeans) i sprawdź czy używana przez Ciebie czcionka posiada polskie znaki.
kart napisał(a)
jednak, wewnatrz tego wektora cos jest nie tak, bo taki kod:
if (znaki[5] == 'ł')
std::cout << "siema dziala
else
std::cout << "NIE";
zwraca NIE, wiec albo nie rozumiem o co chodzi w tym kodowaniu (co pisales) albo ta funkcja dziala zle ?
Jeśli kompilujesz z użyciem g++(a pewnie tak jest) to powinieneś dostać następujące ostrzeżenia:
warning: multi-character character constant
warning: overflow in implicit constant conversion
Oznacza to tyle że każesz mu traktować "ł" jako typ char(jednobajtowy znak). Podczas gdy w UTF-8 "ł" będzie więcej niż jednym bajtem.
<code = cpp>std::string = "Łania";
/* std::string[0] = jedna część litery "Ł".
std::string[1] = druga część litery "Ł".*/
Możesz to łatwo sprawdzić przez string.size(), które nie zwróci Ci liczby znaków, tylko bajtów.
Jeśli chcesz porównywać wielobajtowe znaki korzystaj z std::wchar.