>>10
YHBT, or possibly IHBT.
What is, praytell, the encoding which wchar_t uses? On some systems it's UTF-16, on some systems it's UTF-32. Do you know how you tell the difference?
This is why sane people use UTF-8 or UTF-16 explicitly, or UTF-32 if they have compelling reasons. Just make your own typedefs for them, or use "uint16_t" and whatnot. The "wchar" interface is a cruel joke perpetuated by an uncaring standards committee who needed to get *some* wide character thing out the door regardless of how underspecified it would be. However, you NEED to know the encoding of your characters if you want to do IO or call any library functions, and remember that wchar_t does NOT let you know the encoding.
C1x, of course, fixes it, giving programmers "char16_t" and "char32_t". Cocks also adds the same types. If you need to do anything interesting (I mean, other than I/O and parsing) with Unicode, such as find out where the grapheme cluster boundaries are, then just get ICU. Everyone uses ICU, except a few crazy folks like me (I use mostly UTF-8 in my apps).
Note that ICU does NOT use wchar_t, so you're busted if you need to do anything interesting with text and you made the blunder of trusting wchar_t to do anything useful.
As for Unicode programming, it's not technically challenging or anything there are just a lot of rules about what you can and can't do.