The mblen() function is defined in <cstdlib> header file.
mblen() prototype [As of C++ 11 standard]
int mblen (const char* s, size_t max);
The mblen() function takes a two arguments s and max, and returns a integer value. The pointer s points to the first byte of a multibyte character whose size is returned by the function.
mblen() Parameters
- s: Pointer to the first byte of a multibyte character or a null pointer.
- max: Maximum number of bytes in s that can be examined.
mblen() Return value
If s is a null pointer, a call to mblen() resets its internal conversion state to represent the initial shift state and returns:
- 0 if the current multibyte encoding is not state-dependent (does not use shift sequences).
- non-zero value if the current multibyte encoding is state-dependent (uses shift sequences).
If s is not a null pointer, the mblen() function returns:
- the number of bytes that are contained in the multibyte character.
- -1 if the first bytes pointed to by s do not form a valid multibyte character.
- 0 if s is pointing at the null character '\0'.
Example: How mblen() function works in C++?
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
int len;
char *s = (char *)malloc(20);
strcpy(s,"\xe4\xbd\xa0\xe5\xa5\xbd");
/* resets the conversion state */
mblen(NULL, 0);
len = mblen(s,strlen(s));
cout << "Length of multibyte character: " << len << endl;
return 0;
}
When you run the program, the output will be:
Length of multibyte character: 1