C ++ wcsrtombs () - Стандартна бібліотека C ++

Функція wcsrtombs () в C ++ перетворює широку послідовність символів у вузьку багатобайтову послідовність символів.

Функція wcsrtombs () визначена у файлі заголовка.

прототип wcsrtombs ()

 size_t wcsrtombs (char * dest, const wchar_t ** src, size_t len, mbstate_t * ps);

Функція wcsrtombs () перетворює широкий рядок символів, представлений * src, у відповідний багатобайтовий рядок символів і зберігається в масиві символів, на який вказує dest, якщо dest не має значення null. У дест записується максимум не більше символів.

Процес перетворення подібний до повторного виклику wcrtomb (). Перетворення зупиняється, якщо:

  • Широкий нульовий символ був перетворений і збережений. У цьому випадку для src встановлено значення null, а ps представляє початковий стан зсуву.
  • Виявлено недійсний широкий символ. У цьому випадку src встановлюється на вказівку початку першого неперетвореного широкого символу.
  • len байт було збережено в dest. У цьому випадку src встановлюється таким чином, щоб вказувати на початок першого неперетвореного широкого символу.

Параметри wcsrtombs ()

  • > dest: вказівник на масив символів, де зберігається перетворений багатобайтовий символ.
  • src: вказівник на вказівник на перший широкий символ для перетворення.
  • len: Максимальна кількість байтів, доступних у масиві dest.
  • ps: вказівник на об'єкт стану перетворення.

wcsrtombs () Повертається значення

  • Після успіху функція wcsrtombs () повертає кількість багатобайтових символів, записаних у dest, виключаючи закінчувальний широкий нульовий символ, але включаючи послідовності зсувів.
    Якщо dest є нульовим покажчиком, він повертає кількість широких символів, які було б записано, за винятком закінчувального нульового символу.
  • При помилці перетворення повертається -1, а errno встановлюється як EILSEQ .

Приклад: Як працює функція wcsrtombs ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const wchar_t* wstr = L"u0763u0757u077fu075f"; char str(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = wcsrtombs(str, &wstr, len, &ps); cout << "Number of multibyte characters written (excluding "\0 ") = " << retVal << endl; cout << "Multibyte character = " << str << endl; return 0; )

Коли ви запускаєте програму, результат буде:

 Кількість записаних багатобайтових символів (крім " 0") = 8 Багатобайтових символів = ݣݗݿݟ

Цікаві статті...