Namespaces
Variants
Views
Actions

Standard library header <cwchar>

From cppreference.com
< cpp‎ | header
 
 
Standard library headers
Language support
Concepts
<concepts> (C++20)
Diagnostics
<system_error> (C++11)

Memory management
<memory_resource> (C++17)  
Metaprogramming
<type_traits> (C++11)
<ratio> (C++11)
General utilities
<utility>
<tuple> (C++11)
<optional> (C++17)
<variant> (C++17)
<any> (C++17)
<debugging> (C++26)
<expected> (C++23)
<bitset>
<charconv> (C++17)
<format> (C++20)
<bit> (C++20)

Strings
<cstring>
<cwchar>
<cuchar> (C++11)

Containers
<flat_set> (C++23)
<span> (C++20)
<mdspan> (C++23)

Iterators
<iterator>
Ranges
<ranges> (C++20)
<generator> (C++23)
Algorithms
Numerics
<cfenv> (C++11)
<complex>
<cmath>
<linalg> (C++26)
<numbers> (C++20)

Time
<chrono> (C++11)
Localization
<codecvt> (C++11/17/26*)
<text_encoding> (C++26)
Input/output
<filesystem> (C++17)
<cstdio>
<cinttypes> (C++11)
<strstream> (C++98*)
Regular expressions
<regex> (C++11)
Concurrency support
<stop_token> (C++20)
<thread> (C++11)
<atomic> (C++11)
<rcu> (C++26)
<stdatomic.h> (C++23)
<mutex> (C++11)
<shared_mutex> (C++14)

<condition_variable> (C++11)  
<semaphore> (C++20)
<latch> (C++20)

<barrier> (C++20)
<future> (C++11)
<hazard_pointer> (C++26)

C compatibility
<cstdbool> (C++11/17/20*)  
<ccomplex> (C++11/17/20*)
<ctgmath> (C++11/17/20*)

<cstdalign> (C++11/17/20*)

<ciso646> (until C++20)

 

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.

Contents

[edit] 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_MIN
the smallest valid value of wchar_t
(macro constant)
WCHAR_MAX
the largest valid 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_t integer type that can hold any valid wide character and at least one more value
calendar time type
(class) [edit]

[edit] Functions

String manipulation
copies one wide string to another
(function) [edit]
copies a certain amount of wide characters from one string to another
(function) [edit]
appends a copy of one wide string to another
(function) [edit]
appends a certain amount of wide characters from one wide string to another
(function) [edit]
transform a wide string so that wcscmp would produce the same result as wcscoll
(function) [edit]
String examination
returns the length of a wide string
(function) [edit]
compares two wide strings
(function) [edit]
compares a certain amount of characters from two wide strings
(function) [edit]
compares two wide strings in accordance to the current locale
(function) [edit]
finds the first occurrence of a wide character in a wide string
(function) [edit]
finds the last occurrence of a wide character in a wide string
(function) [edit]
returns the length of the maximum initial segment that consists
of only the wide characters found in another wide string
(function) [edit]
returns the length of the maximum initial segment that consists
of only the wide not found in another wide string
(function) [edit]
finds the first location of any wide character in one wide string, in another wide string
(function) [edit]
finds the first occurrence of a wide string within another wide string
(function) [edit]
finds the next token in a wide string
(function) [edit]
Wide character array manipulation
copies a certain amount of wide characters between two non-overlapping arrays
(function) [edit]
copies a certain amount of wide characters between two, possibly overlapping, arrays
(function) [edit]
compares a certain amount of wide characters from two arrays
(function) [edit]
finds the first occurrence of a wide character in a wide character array
(function) [edit]
copies the given wide character to every position in a wide character array
(function) [edit]
Multibyte/wide character conversion
checks if the std::mbstate_t object represents initial shift state
(function) [edit]
widens a single-byte narrow character to wide character, if possible
(function) [edit]
narrows a wide character to a single-byte narrow character, if possible
(function) [edit]
returns the number of bytes in the next multibyte character, given state
(function) [edit]
converts the next multibyte character to wide character, given state
(function) [edit]
converts a wide character to its multibyte representation, given state
(function) [edit]
converts a narrow multibyte character string to wide string, given state
(function) [edit]
converts a wide string to narrow multibyte character string, given state
(function) [edit]
Input/Output
gets a wide character from a file stream
(function) [edit]
gets a wide string from a file stream
(function) [edit]
writes a wide character to a file stream
(function) [edit]
writes a wide string to a file stream
(function) [edit]
reads a wide character from stdin
(function) [edit]
writes a wide character to stdout
(function) [edit]
puts a wide character back into a file stream
(function) [edit]
switches a file stream between wide character I/O and narrow character I/O
(function) [edit]
reads formatted wide character input from stdin, a file stream or a buffer
(function) [edit]
(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]
prints formatted wide character output to stdout, a file stream or a buffer
(function) [edit]
prints formatted wide character output to stdout, a file stream
or a buffer using variable argument list
(function) [edit]
String conversions
converts a std::tm object to custom wide string textual representation
(function) [edit]
converts a wide string to an integer value
(function) [edit]
converts a wide string to an unsigned integer value
(function) [edit]
converts a wide string to a floating-point value
(function) [edit]

[edit] Notes

[edit] Synopsis

namespace std {
  using size_t =    /* see description */; // freestanding
  using mbstate_t = /* see description */; // freestanding
  using wint_t =    /* see description */; // freestanding
 
  struct tm;
 
  int fwprintf(FILE* stream, const wchar_t* format, ...);
  int fwscanf(FILE* stream, const wchar_t* format, ...);
  int swprintf(wchar_t* s, size_t n, const wchar_t* format, ...);
  int swscanf(const wchar_t* s, const wchar_t* format, ...);
  int vfwprintf(FILE* stream, const wchar_t* format, va_list arg);
  int vfwscanf(FILE* stream, const wchar_t* format, va_list arg);
  int vswprintf(wchar_t* s, size_t n, const wchar_t* format, va_list arg);
  int vswscanf(const wchar_t* s, const wchar_t* format, va_list arg);
  int vwprintf(const wchar_t* format, va_list arg);
  int vwscanf(const wchar_t* format, va_list arg);
  int wprintf(const wchar_t* format, ...);
  int wscanf(const wchar_t* format, ...);
  wint_t fgetwc(FILE* stream);
  wchar_t* fgetws(wchar_t* s, int n, FILE* stream);
  wint_t fputwc(wchar_t c, FILE* stream);
  int fputws(const wchar_t* s, FILE* stream);
  int fwide(FILE* stream, int mode);
  wint_t getwc(FILE* stream);
  wint_t getwchar();
  wint_t putwc(wchar_t c, FILE* stream);
  wint_t putwchar(wchar_t c);
  wint_t ungetwc(wint_t c, FILE* stream);
  double wcstod(const wchar_t* nptr, wchar_t** endptr);
  float wcstof(const wchar_t* nptr, wchar_t** endptr);
  long double wcstold(const wchar_t* nptr, wchar_t** endptr);
  long int wcstol(const wchar_t* nptr, wchar_t** endptr, int base);
  long long int wcstoll(const wchar_t* nptr, wchar_t** endptr, int base);
  unsigned long int wcstoul(const wchar_t* nptr, wchar_t** endptr, int base);
  unsigned long long int wcstoull(const wchar_t* nptr, wchar_t** endptr, int base);
  wchar_t* wcscpy(wchar_t* s1, const wchar_t* s2);                // freestanding
  wchar_t* wcsncpy(wchar_t* s1, const wchar_t* s2, size_t n);     // freestanding
  wchar_t* wmemcpy(wchar_t* s1, const wchar_t* s2, size_t n);     // freestanding
  wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);    // freestanding
  wchar_t* wcscat(wchar_t* s1, const wchar_t* s2);                // freestanding
  wchar_t* wcsncat(wchar_t* s1, const wchar_t* s2, size_t n);     // freestanding
  int wcscmp(const wchar_t* s1, const wchar_t* s2);               // freestanding
  int wcscoll(const wchar_t* s1, const wchar_t* s2);
  int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);    // freestanding
  size_t wcsxfrm(wchar_t* s1, const wchar_t* s2, size_t n);
  int wmemcmp(const wchar_t* s1, const wchar_t* s2, size_t n);    // freestanding
  const wchar_t* wcschr(const wchar_t* s, wchar_t c);             // freestanding
  wchar_t* wcschr(wchar_t* s, wchar_t c);                         // freestanding
  size_t wcscspn(const wchar_t* s1, const wchar_t* s2);           // freestanding
  const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);   // freestanding
  wchar_t* wcspbrk(wchar_t* s1, const wchar_t* s2);               // freestanding
  const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);            // freestanding
  wchar_t* wcsrchr(wchar_t* s, wchar_t c);                        // freestanding
  size_t wcsspn(const wchar_t* s1, const wchar_t* s2);            // freestanding
  const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);    // freestanding
  wchar_t* wcsstr(wchar_t* s1, const wchar_t* s2);                // freestanding
  wchar_t* wcstok(wchar_t* s1, const wchar_t* s2, wchar_t** ptr); // freestanding
  const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);  // freestanding
  wchar_t* wmemchr(wchar_t* s, wchar_t c, size_t n);              // freestanding
  size_t wcslen(const wchar_t* s);                                // freestanding
  wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);              // freestanding
  size_t wcsftime(wchar_t* s, size_t maxsize, const wchar_t* format, const tm* timeptr);
  wint_t btowc(int c);
  int wctob(wint_t c);
 
  // multibyte / wide string and character conversion functions
  int mbsinit(const mbstate_t* ps);
  size_t mbrlen(const char* s, size_t n, mbstate_t* ps);
  size_t mbrtowc(wchar_t* pwc, const char* s, size_t n, mbstate_t* ps);
  size_t wcrtomb(char* s, wchar_t wc, mbstate_t* ps);
  size_t mbsrtowcs(wchar_t* dst, const char** src, size_t len, mbstate_t* ps);
  size_t wcsrtombs(char* dst, const wchar_t** src, size_t len, mbstate_t* ps);
}
 
#define NULL      /* see description */ // freestanding
#define WCHAR_MAX /* see description */ // freestanding
#define WCHAR_MIN /* see description */ // freestanding
#define WEOF      /* see description */ // freestanding

[edit] Defect 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