C++ Library - <cuchar>
The <cuchar> header in C++ provides a functionality for conversion between the narrow and wide character encodings, particularly for work with UTF-8, UTF-16 and UTF-32 formats. It bridges the gap between the C-style character handling and modern C++ wide character. It ensures that the character data can be efficiently converted between different types.
This header includes the C-standard library <uchar.h> functions, offering a C++ compatible interface. The commonly used C++ <cuchar> copying functions are listed below along with their description.
Including <cuchar> Header
To include the <cuchar> header in your C++ program, you can use the following syntax.
#include <cuchar>
Functions of <cuchar> Header
Below is list of all functions from <cuchar> header.
| Sr.No. | Functions & Description |
|---|---|
| 1 | mbrtoc16
It converts a narrow multibyte character to UTF-16 encoding. |
| 2 | c16rtomb
It convert a 16-bit wide character to narrow multibyte string. |
Converting Multibyte to Wide string
In the following example, we are going to convert the multibyte string to a wide string.
#include <iostream>
#include <cuchar>
int main() {
const char * x = "TutorialsPoint";
wchar_t y[50];
size_t a = mbstowcs(y, x, sizeof(y) / sizeof(wchar_t));
if (a != (size_t) - 1) {
std::wcout << "Result : " << y << std::endl;
} else {
std::cerr << "Conversion failed!" << std::endl;
}
return 0;
}
Output
Output of the above code is as follows −
Result : TutorialsPoint
Calculating Length
Consider the following example, where we are going to get the length of the wide-character string.
#include <iostream>
#include <cuchar>
int main() {
const wchar_t * x = L "Welcome";
size_t y = wcslen(x);
std::wcout << L "Result : " << y << std::endl;
return 0;
}
Output
Following is the output of the above code −
Result : 7