C ++ wcsrtombs () - C ++ Standart Kitaplığı

C ++ 'daki wcsrtombs () işlevi, geniş bir karakter dizisini dar çok baytlı bir karakter dizisine dönüştürür.

Wcsrtombs () işlevi başlık dosyasında tanımlanmıştır.

wcsrtombs () prototipi

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

Wcsrtombs () işlevi, * src ile temsil edilen geniş karakter dizesini karşılık gelen çok baytlı karakter dizesine dönüştürür ve dest boş değilse, dest tarafından gösterilen karakter dizisinde saklanır. Dest'e maksimum len karakter yazılır.

Dönüştürme işlemi, wcrtomb () işlevini tekrar tekrar çağırmaya benzer. Aşağıdaki durumlarda dönüştürme durur:

  • Geniş bir boş karakter dönüştürüldü ve saklandı. Bu durumda, src null olarak ayarlanır ve ps, ilk kaydırma durumunu temsil eder.
  • Geçersiz bir geniş karakterle karşılaşıldı. Bu durumda src, dönüştürülmemiş ilk geniş karakterin başlangıcını gösterecek şekilde ayarlanır.
  • len bayt dest içinde saklanmıştır. Bu durumda src, dönüştürülmemiş ilk geniş karakterin başlangıcını gösterecek şekilde ayarlanır.

wcsrtombs () Parametreler

  • > dest: Dönüştürülen çok baytlı karakterin depolandığı karakter dizisinin işaretçisi.
  • src: Dönüştürülecek ilk geniş karaktere işaret eden işaretçi.
  • len: Dest dizide kullanılabilen maksimum bayt sayısı.
  • ps: Dönüştürme durumu nesnesine işaretçi.

wcsrtombs () Dönüş değeri

  • Başarı durumunda, wcsrtombs () işlevi, sonlandırıcı geniş boş karakteri hariç tutarak, ancak kaydırma dizilerini de içerecek şekilde, dest'e yazılan çok baytlı karakterlerin sayısını döndürür.
    Dest bir boş gösterici ise, sonlandırıcı boş karakter hariç yazılan geniş karakterlerin sayısını döndürür.
  • Dönüştürme hatasında -1 döndürülür ve errno EILSEQ olarak ayarlanır .

Örnek: wcsrtombs () işlevi nasıl çalışır?

 #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; )

Programı çalıştırdığınızda, çıktı:

 Yazılan çok baytlı karakter sayısı (" 0" hariç) = 8 Çok baytlı karakter = ݣݗݿݟ

Ilginç makaleler...