<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).
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access