Standard library header <cwchar> - cppreference.com

From cppreference.com

This header was originally in the C standard library as

<wchar.h>

.

This header is part of the null-terminated

wide

and

multibyte

strings libraries. It also provides some

C-style I/O

functions and conversion from

C-style Date

.

Macros

implementation-defined null pointer constant
(macro constant)

[edit]

WEOF

a non-character value of type std::wint_t used to indicate errors
(macro constant)WCHAR_WIDTH

(C++26)

bit width of wchar_t
(macro constant)

[edit]

WCHAR_MIN

minimum value of wchar_t
(macro constant)

[edit]

WCHAR_MAX

maximum value of wchar_t
(macro constant)

[edit]

Types

conversion state information necessary to iterate multibyte character strings
(class)

[edit]

unsigned integer type returned by the

sizeof

operator
(typedef)

[edit]

wint_tinteger type that can hold any valid wide character and at least one more value calendar time type
(class)

[edit]

Functions

String manipulation

wcscpy

copies one wide string to another
(function)

[edit]

wcsncpy

copies a certain amount of wide characters from one string to another
(function)

[edit]

wcscat

appends a copy of one wide string to another
(function)

[edit]

wcsncat

appends a certain amount of wide characters from one wide string to another
(function)

[edit]

wcsxfrm

transform a wide string so that wcscmp would produce the same result as wcscoll
(function)

[edit]

String examination

wcslen

returns the length of a wide string
(function)

[edit]

wcscmp

compares two wide strings
(function)

[edit]

wcsncmp

compares a certain amount of characters from two wide strings
(function)

[edit]

wcscoll

compares two wide strings in accordance to the current locale
(function)

[edit]

wcschr

finds the first occurrence of a wide character in a wide string
(function)

[edit]

wcsrchr

finds the last occurrence of a wide character in a wide string
(function)

[edit]

wcsspn

returns the length of the maximum initial segment that consists
of only the wide characters found in another wide string
(function)

[edit]

wcscspn

returns the length of the maximum initial segment that consists
of only the wide not found in another wide string
(function)

[edit]

wcspbrk

finds the first location of any wide character in one wide string, in another wide string
(function)

[edit]

wcsstr

finds the first occurrence of a wide string within another wide string
(function)

[edit]

wcstok

finds the next token in a wide string
(function)

[edit]

Wide character array manipulation

wmemcpy

copies a certain amount of wide characters between two non-overlapping arrays
(function)

[edit]

wmemmove

copies a certain amount of wide characters between two, possibly overlapping, arrays
(function)

[edit]

wmemcmp

compares a certain amount of wide characters from two arrays
(function)

[edit]

wmemchr

finds the first occurrence of a wide character in a wide character array
(function)

[edit]

wmemset

copies the given wide character to every position in a wide character array
(function)

[edit]

Multibyte/wide character conversion

mbsinit

checks if the

std::mbstate_t

object represents initial shift state
(function)

[edit]

btowc

widens a single-byte narrow character to wide character, if possible
(function)

[edit]

wctob

narrows a wide character to a single-byte narrow character, if possible
(function)

[edit]

mbrlen

returns the number of bytes in the next multibyte character, given state
(function)

[edit]

mbrtowc

converts the next multibyte character to wide character, given state
(function)

[edit]

wcrtomb

converts a wide character to its multibyte representation, given state
(function)

[edit]

mbsrtowcs

converts a narrow multibyte character string to wide string, given state
(function)

[edit]

wcsrtombs

converts a wide string to narrow multibyte character string, given state
(function)

[edit]

Input/Output

fgetwcgetwc

gets a wide character from a file stream
(function)

[edit]

fgetws

gets a wide string from a file stream
(function)

[edit]

fputwcputwc

writes a wide character to a file stream
(function)

[edit]

fputws

writes a wide string to a file stream
(function)

[edit]

getwchar

reads a wide character from

stdin

(function)

[edit]

putwchar

writes a wide character to

stdout

(function)

[edit]

ungetwc

puts a wide character back into a file stream
(function)

[edit]

fwide

switches a file stream between wide character I/O and narrow character I/O
(function)

[edit]

wscanffwscanfswscanf

reads formatted wide character input from

stdin

, a file stream or a buffer
(function)

[edit]

vwscanfvfwscanfvswscanf

(C++11)(C++11)(C++11)

reads formatted wide character input from

stdin

, a file stream
or a buffer using variable argument list
(function)

[edit]

wprintffwprintfswprintf

prints formatted wide character output to

stdout

, a file stream or a buffer
(function)

[edit]

vwprintfvfwprintfvswprintf

prints formatted wide character output to

stdout

, a file stream
or a buffer using variable argument list
(function)

[edit]

String conversions

wcsftime

converts a

std::tm

object to custom wide string textual representation
(function)

[edit]

wcstolwcstoll

converts a wide string to an integer value
(function)

[edit]

wcstoulwcstoull

converts a wide string to an unsigned integer value
(function)

[edit]

wcstofwcstodwcstold

converts a wide string to a floating-point value
(function)

[edit]

Notes

NULL

is also defined in the following headers:

<cstddef>

<cstring>

<ctime>

<clocale>

<cstdio>

std::size_t

is also defined in the following headers:

<cstddef>

<ctime>

<cstdio>

std::wint_t is also defined in the following headers:

<cwctype>

std::tm

is also defined in the following headers:

<ctime>

Synopsis

#define __STDC_VERSION_WCHAR_H__ 202311Lnamespacestd{usingsize_t=/* implementation-defined */;// freestandingusingmbstate_t=/* see description */;// freestandingusingwint_t=/* see description */;// freestandingstructtm;intfwprintf(FILE*stream,constwchar_t*format,...);intfwscanf(FILE*stream,constwchar_t*format,...);intswprintf(wchar_t*s,size_tn,constwchar_t*format,...);intswscanf(constwchar_t*s,constwchar_t*format,...);intvfwprintf(FILE*stream,constwchar_t*format,va_listarg);intvfwscanf(FILE*stream,constwchar_t*format,va_listarg);intvswprintf(wchar_t*s,size_tn,constwchar_t*format,va_listarg);intvswscanf(constwchar_t*s,constwchar_t*format,va_listarg);intvwprintf(constwchar_t*format,va_listarg);intvwscanf(constwchar_t*format,va_listarg);intwprintf(constwchar_t*format,...);intwscanf(constwchar_t*format,...);wint_tfgetwc(FILE*stream);wchar_t*fgetws(wchar_t*s,intn,FILE*stream);wint_tfputwc(wchar_tc,FILE*stream);intfputws(constwchar_t*s,FILE*stream);intfwide(FILE*stream,intmode);wint_tgetwc(FILE*stream);wint_tgetwchar();wint_tputwc(wchar_tc,FILE*stream);wint_tputwchar(wchar_tc);wint_tungetwc(wint_tc,FILE*stream);doublewcstod(constwchar_t*nptr,wchar_t**endptr);floatwcstof(constwchar_t*nptr,wchar_t**endptr);longdoublewcstold(constwchar_t*nptr,wchar_t**endptr);longintwcstol(constwchar_t*nptr,wchar_t**endptr,intbase);longlongintwcstoll(constwchar_t*nptr,wchar_t**endptr,intbase);unsignedlongintwcstoul(constwchar_t*nptr,wchar_t**endptr,intbase);unsignedlonglongintwcstoull(constwchar_t*nptr,wchar_t**endptr,intbase);wchar_t*wcscpy(wchar_t*s1,constwchar_t*s2);// freestandingwchar_t*wcsncpy(wchar_t*s1,constwchar_t*s2,size_tn);// freestandingwchar_t*wmemcpy(wchar_t*s1,constwchar_t*s2,size_tn);// freestandingwchar_t*wmemmove(wchar_t*s1,constwchar_t*s2,size_tn);// freestandingwchar_t*wcscat(wchar_t*s1,constwchar_t*s2);// freestandingwchar_t*wcsncat(wchar_t*s1,constwchar_t*s2,size_tn);// freestandingintwcscmp(constwchar_t*s1,constwchar_t*s2);// freestandingintwcscoll(constwchar_t*s1,constwchar_t*s2);intwcsncmp(constwchar_t*s1,constwchar_t*s2,size_tn);// freestandingsize_twcsxfrm(wchar_t*s1,constwchar_t*s2,size_tn);intwmemcmp(constwchar_t*s1,constwchar_t*s2,size_tn);// freestandingconstwchar_t*wcschr(constwchar_t*s,wchar_tc);// freestandingwchar_t*wcschr(wchar_t*s,wchar_tc);// freestandingsize_twcscspn(constwchar_t*s1,constwchar_t*s2);// freestandingconstwchar_t*wcspbrk(constwchar_t*s1,constwchar_t*s2);// freestandingwchar_t*wcspbrk(wchar_t*s1,constwchar_t*s2);// freestandingconstwchar_t*wcsrchr(constwchar_t*s,wchar_tc);// freestandingwchar_t*wcsrchr(wchar_t*s,wchar_tc);// freestandingsize_twcsspn(constwchar_t*s1,constwchar_t*s2);// freestandingconstwchar_t*wcsstr(constwchar_t*s1,constwchar_t*s2);// freestandingwchar_t*wcsstr(wchar_t*s1,constwchar_t*s2);// freestandingwchar_t*wcstok(wchar_t*s1,constwchar_t*s2,wchar_t**ptr);// freestandingconstwchar_t*wmemchr(constwchar_t*s,wchar_tc,size_tn);// freestandingwchar_t*wmemchr(wchar_t*s,wchar_tc,size_tn);// freestandingsize_twcslen(constwchar_t*s);// freestandingwchar_t*wmemset(wchar_t*s,wchar_tc,size_tn);// freestandingsize_twcsftime(wchar_t*s,size_tmaxsize,constwchar_t*format,consttm*timeptr);wint_tbtowc(intc);intwctob(wint_tc);// multibyte / wide string and character conversion functionsintmbsinit(constmbstate_t*ps);size_tmbrlen(constchar*s,size_tn,mbstate_t*ps);size_tmbrtowc(wchar_t*pwc,constchar*s,size_tn,mbstate_t*ps);size_twcrtomb(char*s,wchar_twc,mbstate_t*ps);size_tmbsrtowcs(wchar_t*dst,constchar**src,size_tlen,mbstate_t*ps);size_twcsrtombs(char*dst,constwchar_t**src,size_tlen,mbstate_t*ps);}#define NULL /* implementation-defined */// freestanding#define WCHAR_MAX /* see description */// freestanding#define WCHAR_MIN /* see description */// freestanding#define WEOF /* see description */// freestanding#define WCHAR_WIDTH /* see description */// freestandingDefect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior

LWG 345

C++98

std::tm

was not provided in <cwchar>provided