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

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

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

mbsrtowcs () prototipi

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

Mbsrtowcs () işlevi, ilk baytı * src ile temsil edilen çok baytlı karakter dizesini karşılık gelen geniş karakter gösterimine dönüştürür ve dest ile gösterilen geniş karakter dizisinde saklanır. Dest'e maksimum uzunluk genişliğinde karakter yazılır.

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

  • Çok baytlı 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 çok baytlı karakterle karşılaşıldı. Bu durumda src, dönüştürülmemiş ilk çok baytlı karakterin başlangıcını gösterecek şekilde ayarlanır.
  • len wide karakteri dest içinde saklanmıştır. Bu durumda src, dönüştürülmemiş ilk çok baytlı karakterin başlangıcını gösterecek şekilde ayarlanır.

mbsrtowcs () Parametreler

  • dest: Dönüştürülen geniş karakterin depolandığı dizinin işaretçisi.
  • src: Dönüştürülecek ilk çok baytlı karaktere işaret eden işaretçi.
  • len: Saklanacak maksimum sayı geniş karakter.
  • ps: Çok baytlı dizeyi yorumlarken kullanılan dönüştürme durumuna işaretçi

mbsrtowcs () Dönüş değeri

  • Başarı durumunda, mbsrtowcs () işlevi, sonlandıran geniş boş karakter hariç tutularak hedef'e yazılan geniş karakter sayısını döndürür. Dest bir boş gösterici ise, sınırsız uzunluk dikkate alınarak 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: mbsrtowcs () işlevi nasıl çalışır?

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

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

 Yazılan geniş karakter sayısı (L " 0" hariç) = 4 Geniş karakter = ݣݗݿݟ

Ilginç makaleler...