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

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

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

прототип mbsrtowcs ()

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

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

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

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

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

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

mbsrtowcs () Повернене значення

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

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

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

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

 Кількість написаних широких символів (крім L " 0") = 4 Широкий символ = ݣݗݿݟ

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