Funktionen mbrtoc16 () i C ++ konverterer et smalt multibyttegn til en 16 bit tegnsrepræsentation.
Funktionen mbrtoc16 () er defineret i header-fil.
mbrtoc16 () prototype
size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);
Funktionen mbrtoc16 () konverterer højst n multibyttegn repræsenteret af s til dets ækvivalente utf-16-tegn og gemmer det i den hukommelsesplacering, som pc16 peger på.
Hvis s repræsenterer en nul-markør, ignoreres værdierne for n og pc16, og opkaldet til svarer til mbrtoc16 (NULL, "", 1, ps).
Hvis det resulterende tegn, der produceres, er null, repræsenterer konverteringstilstanden * ps den oprindelige skifttilstand.
mbrtoc16 () Parametre
- pc16: Markør til hukommelsesplaceringen for at gemme det resulterende 16 bit tegn.
- s: Markør til det multibyttegn, der skal konverteres.
- n: Maksimalt antal byte i s, der skal konverteres.
- ps: En markør til et mbstate_t-objekt, der bruges til fortolkning af multibytstrengen.
mbrtoc16 () Returværdi
Funktionen mbrtoc16 () returnerer den første af følgende værdi, der matcher nedenstående tilfælde:
- 0, hvis det konverterede tegn er et null-tegn.
- antallet af byte (højst n) af multibyttegnet, der med succes blev konverteret til 16 bit tegn.
- -3, hvis den næste
char16_t
fra et multi-char16_t-tegn (f.eks. Et surrogatpar) nu er skrevet til * pc16. I dette tilfælde behandles ingen byte fra input. - -2, hvis de næste n byte udgør et ufuldstændigt, men hidtil gyldigt, multibyttegn. I dette tilfælde skrives intet til * pc16.
- -1 hvis der opstår kodningsfejl. I dette tilfælde er der ikke skrevet noget til * pc16, errno er sat til EILSEQ, og værdien af * ps er ikke specificeret.
Eksempel: Hvordan fungerer mbrtoc16 ()?
#include #include #include #include using namespace std; int main(void) ( char16_t pc16; char s() = "x" ; mbstate_t ps(); int length; length = mbrtoc16(&pc16, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc16() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("16-bit character = 0x%04hx", pc16); return 0; )
Når du kører programmet, vil output være:
Multibytestreng = x Lengt> h = 1 16-bit tegn = 0x0078