当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


C++ mbrlen()用法及代码示例

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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。