Функція wcrtomb () в C ++ перетворює широкий символ у своє вузьке багатобайтове представлення.
Wcrtomb () визначається у файлі заголовка.
прототип wcrtomb ()
size_t wcrtomb (char * s, wchar_t wc, mbstate_t * ps);
Функція wcrtomb () перетворює широкий символ, представлений wc, у вузький багатобайтовий символ і зберігається у адресі, на яку вказує s.
- Якщо s не є нульовим покажчиком, функція wcrtomb () визначає максимальну кількість байтів, необхідну для зберігання багатобайтового подання wc, і зберігає його в місці пам'яті, на яке вказує s. Можна записати максимум MB_CUR_MAX байт. Значення ps оновлюється за необхідності.
- Якщо s є нульовим покажчиком, виклик еквівалентний
wcrtomb(buf, L' ', ps)
деякому внутрішньому буферу buf. - Якщо
wc == L' '
зберігається нульовий байт.
Параметри wcrtomb ()
- s: вказівник на багатобайтовий масив символів для збереження результату.
- wc: широкий символ для перетворення.
- ps: вказівник на стан перетворення, який використовується при інтерпретації багатобайтового рядка
wcrtomb () Повертається значення
- Після успіху функція wcrtomb () повертає кількість байтів, записаних в масив символів, на перший елемент якого вказує s.
- При відмові (тобто wc не є допустимим широким символом), він повертає -1, errno встановлюється на EILSEQ і залишає * ps у невизначеному стані.
Приклад: Як працює функція wcrtomb ()?
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); wchar_t str() = L"uu00c6u00f5u01b5"; char s(16); int retVal; mbstate_t ps = mbstate_t(); for (int i=0; i
When you run the program, the output will be:
Size of u is 1 bytes Size of Æ is 2 bytes Size of õ is 2 bytes Size of Ƶ is 2 bytes