#include <iostream>
#include <cstring>
int main()
{
char s[] = "abücd€ef";
for ( size_t i = 0, j = strlen( s ); i < j; i++ )
{
printf( "0x%X\n", s[i] );
}
for ( size_t i = 0, j = strlen( s ); i < j; i++ )
{
//if ( !strncmp( s+i, "ü", 2 ) )
if ( i < j-1 && (s[i] & 0xFF) == 0xC3 && (s[i+1] & 0xFF) == 0xBC )
{
printf( "umlaut detected at pos %d\n", i );
i++;
}
//else if ( !strncmp( s+i, "€", 3 ) )
else if ( i < j-2 && (s[i] & 0xFF) == 0xE2 && (s[i+1] & 0xFF) == 0x82 && (s[i+2] & 0xFF) == 0xAC )
{
printf( "euro detected at pos %d\n", i );
i += 2;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KIAppbnQgbWFpbigpIAp7CgljaGFyIHNbXSA9ICJhYsO8Y2TigqxlZiI7CiAKICAgIGZvciAoIHNpemVfdCBpID0gMCwgaiA9IHN0cmxlbiggcyApOyBpIDwgajsgaSsrICkKICAgIHsKICAgICAgICBwcmludGYoICIweCVYXG4iLCBzW2ldICk7CiAgICB9CiAKICAgIGZvciAoIHNpemVfdCBpID0gMCwgaiA9IHN0cmxlbiggcyApOyBpIDwgajsgaSsrICkKICAgIHsKICAgICAgICAvL2lmICggIXN0cm5jbXAoIHMraSwgIsO8IiwgMiApICkKICAgICAgICBpZiAoIGkgPCBqLTEgJiYgKHNbaV0gJiAweEZGKSA9PSAweEMzICYmIChzW2krMV0gJiAweEZGKSA9PSAweEJDICkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZiggInVtbGF1dCBkZXRlY3RlZCBhdCBwb3MgJWRcbiIsIGkgKTsKICAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgICAgICAvL2Vsc2UgaWYgKCAhc3RybmNtcCggcytpLCAi4oKsIiwgMyApICkKICAgICAgICBlbHNlIGlmICggaSA8IGotMiAmJiAoc1tpXSAmIDB4RkYpID09IDB4RTIgJiYgKHNbaSsxXSAmIDB4RkYpID09IDB4ODIgJiYgKHNbaSsyXSAmIDB4RkYpID09IDB4QUMgKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCAiZXVybyBkZXRlY3RlZCBhdCBwb3MgJWRcbiIsIGkgKTsKICAgICAgICAgICAgaSArPSAyOwogICAgICAgIH0KICAgIH0KIAoJcmV0dXJuIDA7Cn0=