C ++ mbsrtowcs () - C ++ szabványos könyvtár

Az mbsrtowcs () függvény a C ++ nyelven egy keskeny, többbájtos karaktersorozatot széles (Wchar_t típusú) karaktersorrenddé alakít.

Az mbsrtowcs () függvény a fejlécfájlban van meghatározva.

mbsrtowcs () prototípus

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

Az mbsrtowcs () függvény átalakítja a többbájtos karakterláncot, amelynek első byte-ját a * src képviseli, a megfelelő széles karakterábrázolássá, és a dest karakter által jelzett széles karaktertömbben tárolódik. Legfeljebb len széles karaktert írnak a célra.

Az átalakítási folyamat hasonló az mbrtowc () ismételt meghívásához. Az átalakítás leáll, ha:

  • Több bájtos null karaktert alakítottak át és tároltak. Ebben az esetben az src értéke null, és a ps a kezdeti eltolás állapotát jelenti.
  • Érvénytelen többbájtos karaktert találtunk. Ebben az esetben az src beállítása az első nem konvertált többbájtos karakter kezdetére mutat.
  • len széles karakter tárolásra került a dest. Ebben az esetben az src úgy van beállítva, hogy az első nem konvertált többbájtos karakter elejére mutasson.

mbsrtowcs () Paraméterek

  • dest: Mutató annak a tömbnek, ahol az átalakított széles karakter tárolódik.
  • src: Mutató az első átalakítandó többbájtos karakterre
  • len: A tárolható maximális számú széles karakter.
  • ps: A többbájtos karakterlánc értelmezésekor használt konverziós állapot mutatója

mbsrtowcs () Visszatérési érték

  • Siker esetén az mbsrtowcs () függvény visszaadja a végéig írt széles karakterek számát, kivéve a befejező széles null karaktert. Ha a dest null mutató, akkor a széles karakterek számát adja vissza, amelyeket a korlátlan hosszúságot figyelembe véve írtak volna.
  • Konverziós hiba esetén -1-et adunk vissza, és az errno értéke EILSEQ .

Példa: Hogyan működik az mbsrtowcs () függvény?

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

A program futtatásakor a kimenet a következő lesz:

 Az írott széles karakterek száma (kivéve L " 0") = 4 Széles karakter = ݣݗݿݟ

érdekes cikkek...