Funkce mbstowcs () v C ++ převádí řetězec vícebajtových znaků na ekvivalentní sekvenci širokých znaků.
Funkce mbstowcs () je definována v hlavičkovém souboru.
prototyp mbstowcs ()
size_t mbstowcs (wchar_t * dest, const char * src, size_t max);
Funkce mbstowcs () trvá tři argumenty a vrací celočíselnou hodnotu.
Tato funkce převádí řetězec vícebajtových znaků, jehož první prvek je namířen pomocí src na jeho široký znak (hodnota typu wchar_t).
Výsledek se uloží na místo v paměti, na které ukazuje cíl. Parametr max představuje maximální počet vícebajtových znaků, které mají být převedeny.
Mechanismus převodu je stejný jako u mbtowc (), kromě toho, že stav převodu mbtowc není ovlivněn. Převod se zastaví, pokud:
- Objeví se nulový znak, který se poté převede a uloží.
- Byl zjištěn neplatný vícebajtový znak.
- byl převeden maximální počet vícebajtových znaků.
mbstowcs () parametry
- dest: Ukazatel na výsledné široké pole znaků.
- src: Ukazatel na první prvek vícebajtového znaku, který je převeden na široký znak.
- max: Maximální počet vícebajtových znaků, které mají být převedeny.
mbstowcs () Návratová hodnota
- Pokud je převod úspěšný, mbstowcs () vrátí počet širokých znaků kromě ukončovacího znaku (tj. „ 0“), který je zapsán do cílového pole.
- Pokud během převodu dojde k nějaké chybě, vrátí hodnotu -1.
Příklad: Jak funguje funkce mbstowcs ()?
#include #include using namespace std; int main() ( char src() = "xc4xe3xbaxc3"; wchar_t dest(10); int num; num = mbstowcs(dest, src, MB_CUR_MAX); cout << "Number of wide character converted = " << num << endl; wcout << "Wide Character String = " << dest << endl; return 0; )
Při spuštění programu bude možný výstup:
Počet převedených širokých znaků = 1 Řetězec širokých znaků = ─