wide characters are used in UNICODE programs, which are programs written for most any language such as Chinese, Japanese, German, Frensh, etc. etc. Many characters in non-English languages can't be represented in one char data type. There is actually a
UNICODE standard which specify the width of a UNICODE character and functions to manipulate them, and convert from char* to wchar_t*. The Microsoft compilers have a large set of macros to convert function calls between UNICODE and non-UNICODE compiles. If you use these macros you can compile with or without UNICODE with nearly no changes in the source code.