Разница между char и wchar_t заключается в том, для каких символов и в какой кодировке они предназначены. 12
Char представляет один символ в кодировке ASCII. 23 Переменная типа char рассчитана на хранение только одного символа (например, буквы или пробела). 1 Стандарт языка С++ не определяет кодировку символов, которая будет использоваться для символов char, поэтому производители компиляторов могут выбирать любую кодировку, но обычно это ASCII. 2
Wchart предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например в кодировке Unicode. 1 Тип wchart представляет расширенный символ. 2 На Windows занимает в памяти 2 байта (16 бит), на Linux — 4 байта (32 бита). 23
Таким образом, char подходит для случаев, когда диапазон кодировок составляет 256 символов или меньше, а wchar_t — когда требуется возможность работы с кодировками, содержащими больше символов. 5