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 = ݣݗݿݟ