Early computers were limited to type English alphabets, integers and some special characters. This capability was sufficient for simple documentations and arithmetic. With the passage of time when the computer usage started spreading, scientists realized that every country has its own language and people use different characters to represent the words of their native language and available char size is not sufficient to cover character sets of every language.
ASCII character code represents 128 different codes. 28 lower case alphabet, 28 upper case alphabet, 0-9 digits and some special characters like pipe sign, hash sign etc. One byte which contains 8 bits has 256 possible combination and it is sufficient to represent all these 128 characters in one byte.
The problem would not have been this huge, if everyone used languages similar to English for example Swedish and German, but there are other languages like Chinese, Arabic,Urdu, Tamil…. then it’s a difficult problem to handle. Lets see what happens when it comes to other languages. Urdu has 37 characters, Russian has 33. Chinese language based on more than 50,000 graphs and symbols instead of characters.
We know that character is one byte long and this is not possible to handle all characters of different languages in 256 possible combination (one byte). In late 80’s scientist introduced 16-bit encoding scheme for solving this problem and that encoding scheme is known as Unicode. Character with 2 bytes or 16 bits long with possible 65,536 combinations are sufficient to solve this problem. C++ has adapted this technique and it represents different languages in Unicode characters. These Unicode characters are known as wide characters. char ch; wchar_t wch;