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

Процесът на преобразуване е подобен на многократното извикване на wcrtomb (). Преобразуването спира, ако:

  • Широк нулев знак е преобразуван и съхранен. В този случай src е настроен на null и ps представлява начално състояние на изместване.
  • Възникна невалиден широк знак. В този случай src е настроен да посочва началото на първия неконвертиран широк символ.
  • len байта са съхранени в dest. В този случай src е настроен да посочва началото на първия неконвертиран широк символ.

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

  • > dest: указател към масива от символи, където се съхранява преобразуваният многобайтов символ.
  • src: Показалец към показалеца към първия широк символ за преобразуване.
  • len: Максимален брой байтове, налични в целевия масив.
  • 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 Многобайтови знаци = ݣݗݿݟ

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