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

A wcsrtombs () függvény a C ++ nyelven egy széles karaktersorozatot keskeny, többbájtos karaktersorrá alakít át.

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

wcsrtombs () prototípus

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

A wcsrtombs () függvény az * src által képviselt széles karakterláncot megfelelő multibyte karakterlánccá konvertálja, és a dest által mutatott karaktertömbben tárolja, ha a dest nem nulla. Legfeljebb len karaktereket írunk a célra.

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

  • Széles 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 széles karaktert találtunk. Ebben az esetben az src az első nem konvertált széles karakter kezdetének beállítására van beállítva.
  • len bájtokat a Dest. Ebben az esetben az src az első nem konvertált széles karakter kezdetének beállítására van beállítva.

wcsrtombs () Paraméterek

  • > dest: A karaktertömb mutatója, ahol az átalakított többbájtos karakter tárolódik.
  • src: Mutató az első széles konvertálandó karakterre.
  • len: A dest tömbben elérhető bájtok maximális száma.
  • ps: Az átalakító állapot objektum mutatója.

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

  • Siker esetén a wcsrtombs () függvény visszaadja a végéig írt multibyte-os karakterek számát, kivéve a befejező széles null karaktert, de az eltolási szekvenciákat is.
    Ha a dest null mutató, akkor a széles karakterek számát adja vissza, amelyeket a befejező null karakter kivételével írtak volna.
  • Konverziós hiba esetén -1-et adunk vissza, és az errno értéke EILSEQ .

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

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

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

 Az írt többbájtos karakterek száma (a " 0" kivételével) = 8 Többbájtos karakter = ݣݗݿݟ

érdekes cikkek...