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