C++ 中的mbrlen() 函数确定多字节字符的字节大小。
mbrlen() 函数在<cwchar> 头文件中定义。
mbrlen()原型
size_t mbrlen( const char* s, size_t n, mbstate_t* ps);
mbrlen() 函数检查第一个字节由 s
指向的字符串,并确定当前转换状态 ps
的字节大小。最多检查s
中的n
字节。
参数:
s
:指向要检查的多字节字符串的第一个字节的指针。n
:要检查的 s 中的最大字节数。ps
:指向定义转换状态的 mbstate_t 对象的指针。
返回:
mbrlen() 函数返回:
- 完成有效多字节字符的字节数。
- 如果 s 指向空字符,则为 0。
- -1 是发生编码错误。
- -2 如果接下来的 n 个字节不代表一个完整的多字节字符。
示例:mbrlen() 函数如何工作?
#include <cwchar>
#include <clocale>
#include <iostream>
using namespace std;
void test_mbrlen(const char *s, size_t n)
{
mbstate_t ps = mbstate_t();
int retVal = mbrlen(s, n, &ps);
if (retVal == -2)
cout << "Next " << n << " byte(s) doesn't represent a complete multibyte character" << endl;
else if (retVal == -1)
cout << "Next " << n << " byte(s) doesn't represent a valid multibyte character" << endl;
else
cout << "Next " << n << " byte(s) of " << s << " holds " << retVal << " byof multibyte character" << endl;
}
int main()
{
setlocale(LC_ALL, "en_US.utf8");
char str[] = "\u00b5";
test_mbrlen(str, 1);
test_mbrlen(str, 5);
return 0;
}
运行程序时,输出将是:
Next 1 byte(s) doesn't represent a complete multibyte character Next 5 byte(s) of µ holds 2 bytes of multibyte character
相关用法
- C++ mbrlen()用法及代码示例
- C++ mbrtoc32()用法及代码示例
- C++ mbrtoc16()用法及代码示例
- C++ mbrtowc()用法及代码示例
- C++ mbtowc()用法及代码示例
- C++ mbsinit()用法及代码示例
- C++ mbstowcs()用法及代码示例
- C++ mblen()用法及代码示例
- C++ mbsrtowcs()用法及代码示例
- C++ map lower_bound()用法及代码示例
- C++ multimap key_comp()用法及代码示例
- C++ merge()用法及代码示例
- C++ multimap empty()用法及代码示例
- C++ multimap cend()用法及代码示例
- C++ multiset begin()、end()用法及代码示例
- C++ map::at()用法及代码示例
- C++ multiset value_comp()用法及代码示例
- C++ multimap insert()用法及代码示例
- C++ memset()用法及代码示例
- C++ map max_size()用法及代码示例
注:本文由纯净天空筛选整理自 C++ mbrlen()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。