Функция 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