<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).
Get C++ In a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.