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. В dest се записват максимум символи с дължина len.

Процесът на преобразуване е подобен на извикването на 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 Широк знак = ݣݗݿݟ

Интересни статии...