<cwchar>
The <cwchar> header is the C++ version of the C standard <wchar.h> header, which declares types
and functions for working with wide characters. Many of these functions
are wide versions of functions found in <cstdio> and <cstring> plus improved versions of the
multibyte functions from <cstdlib>.
You can use narrow (byte-oriented) I/O functions, as declared in
<cstdio>, or wide I/O
functions, as declared in <cwchar>, but you cannot mix wide and
narrow functions on a single stream without explicitly changing the
stream’s orientation (see the fwide
function in this section for details).
Wide I/O treats a file as a sequence of multibyte characters. When
reading, multibyte characters are converted to wide characters, and when
writing, wide characters are converted to multibyte characters. The
conversion depends on the C locale (set with setlocale in <clocale>).
See Chapter 1 for information about character sets, Chapter 8 for information about multibyte characters and shift states, and Chapter 9 for information about wide characters and I/O.
When working with wide characters, consider using the C++ I/O
streams and wstring class instead of
the C functions. (See <string>
later in this chapter for the wstring
class and the char_traits class
template.) The <locale> header
provides additional support for converting between narrow and wide
characters (the codecvt and related
facets).