Witam. Mam problem z przeszukiwaniem stringa w którym są polskie znaki. Tak więc, mam taką funkcję:
bool Planet::is_built(std::string ob)
{
size_t found = _BODY.find("alt=\""+ob+"\"");
if(found != std::string::npos)
return true;
return false;
}
gdzie _BODY to źrodło strony (kod HTML). Teraz jeżeli jako argument podam wyraz z polskim znakiem, np. "Stodoła" to mi zwróci fałsz (nie znajdzie go, mimo że jest taki tag alt="Stodoła"). Jeżeli natomiast podam jakiś inny wyraz, który też jest w źródle ale już nie ma polskiego znaku, np. "Chlew" to znajdzie mi go poprawnie. Nawet gdy wyświetlam ten wyraz w konsoli to mam krzak zamiast polskiej litery. Dlatego Google mi podpowiedziało że trzeba przekonwertować polskie znaki, robię to funkcją:
std::string PL(std::string & znak) {
for(unsigned i = 0; i < znak.length(); i++) {
switch(znak[ i ]) {
case 'ą':
znak[ i ] = static_cast < char >( 165 );
break;
case 'ć':
znak[ i ] = static_cast < char >( 134 );
break;
case 'ę':
znak[ i ] = static_cast < char >( 169 );
break;
case 'ł':
znak[ i ] = static_cast < char >( 136 );
break;
case 'ń':
znak[ i ] = static_cast < char >( 228 );
break;
//itd
}
return znak;
}
Teraz wyświetla znak poprawnie, wyraz jest poprawny, ale nadal funkcja nie znajduje mi go w źródle strony choć jest.
PS. Źródło pobieram cURLem
Pozdrawiam