• C++ Reference: Standard C++ Library reference: C Library: cwchar: mbrtowc


    C++官网参考链接:https://cplusplus.com/reference/cwchar/mbrtowc/

    函数

    mbrtowc
    size_t mbrtowc (wchar_t* pwc, const char* pmb, size_t max, mbstate_t* ps);
    将多字节序列转换为宽字符
    pmb所指向的多字节字符被转换为wchar_t类型的值,并存储在pwc所指向的位置。函数返回多字节字符的字节长度。
    该函数使用(并更新)由ps描述的移位状态。如果ps是空指针,则该函数使用自己的内部移位状态,只有在必要时调用该函数才能更改该状态。
    如果pmb指向空字符,函数将重置移位状态,并在pwc存储宽空字符后返回0。
    用空指针作为pmb调用函数也会重置移位状态,忽略形参pwcmaxpwc中没有存储字符)。
    此函数的行为取决于所选C语言环境(C locale)的LC_CTYPE类别。
    这是mbtowc)的可重新启动版本。

    形参
    pwc 
    指向wchar_t类型对象的指针。
    或者,这个实参可以是一个空指针,在这种情况下,函数不存储wchar_t转换,但仍然返回多字节字符的字节长度。
    pmb
    指向多字节字符的第一个字节的指针。
    或者,可以用空指针调用函数,在这种情况下,函数会将移位状态(ps或它自己的内部状态)重置为初始状态并返回0。
    max 
    pmb读取的最大字节数。
    宏常量MB_CUR_MAX定义了在当前语言环境下可以形成多字节字符的最大字节数量。
    size_t是无符号整型。
    ps
    指向定义转换状态的mbstate_t对象的指针。

    返回值
    用于产生宽字符的来自pmb的字节数量。
    如果这是空宽字符,或者pmb是空指针,则函数返回0(在第一种情况下,空宽字符存储在pwc)。
    如果pmbmax第一个字符构成一个不完整(但可能有效)的多字节字符,则函数返回(size_t)-2(pwc中没有存储值)。
    否则,如果pmb指向的字符没有形成有效的多字节字符(或一个多字节字符的开始),则函数返回(size_t)-1并将errno设置为EILSEQ(pwc中不存储任何值)。
    注意,size_t是无符号整型,因此返回的值都不可能小于0。

    用例
    /* mbrtowc example */
    #include

    void printbuffer (const char* pt, size_t max)
    {
      size_t length;
      wchar_t dest;
      mbstate_t mbs;

      mbrlen ( NULL, 0, &mbs );  /* initialize mbs */

      while (max>0) {
        length = mbrtowc(&dest,pt,max,&mbs);
        if ((length==0)||(length>max)) break;
        wprintf (L"[%lc]",dest);
        pt+=length; max-=length;
      }
    }

    int main()
    {
      const char str [] = "mbrtowc example";

      printbuffer (str,sizeof(str));

      return 0;

    printbuffer函数逐字符输出一个多字节字符串。
    该示例在"C"语言环境中使用一个普通字符串,但该函数支持支持多字节字符串的语言环境。
    输出:

  • 相关阅读:
    tensorflow学习环境安装
    #与##的用法
    el-menu 导航栏学习-for循环封装(2)
    muduo源码剖析之EventLoopThreadPool
    进程相关知识总结
    【Image captioning】论文精读三–Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
    element-plus组件库的使用
    基于微信小程序的新冠疫苗预约系统
    LeetCode 42. 接雨水
    react中如何对props传的参数进行必要的限制
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/127492989