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


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

    函数 

    wcrtomb
    size_t wcrtomb (char* pmb, wchar_t wc, mbstate_t* ps);
    将宽字符转换为多字节序列
    宽字符wc被转换为其等效多字节,并存储在pmb指向的数组中。函数返回由pmb指向的等效多字节序列的字节长度。
    该函数使用(并更新)由ps描述的移位状态。如果ps是空指针,则该函数使用自己的内部移位状态,只有在必要时调用该函数才能更改该状态。
    如果wc是一个空宽字符,该函数将重置移位状态并存储一个空字节,前面是恢复初始移位状态所需的任何移位序列。
    使用空指针作为pmb调用函数也会重置移位状态(并忽略形参wc)。
    此函数的行为取决于所选C语言环境(C locale)的LC_CTYPE类别。
    这是wctomb)的可重新启动版本。

    形参 
    pmb
    指向足以容纳多字节序列的数组的指针。
    当前语言环境中字符的多字节序列的最大长度是MB_CUR_MAX字节。
    或者,可以用空指针调用函数,在这种情况下,函数总是将移位状态重置为初始状态,就像wc是L'\0'(忽略作为wc传递的实际值)。
    wc
    wchar_t类型的宽字符。
    ps
    指向定义转换状态的mbstate_t对象的指针。
    如果这是一个空指针,函数使用它自己的内部移位状态,该状态在程序启动时初始化,只有调用该函数时才会改变。

    返回值
    写入pmb的多字节序列的字节大小,包括任何移位字符。
    如果没有字符对应,函数返回(size_t)-1并将errno设置为EILSEQ。
    如果pmb是空指针,则函数返回1加上恢复初始移位状态所需的字节数量(就好像函数操作的是内部缓冲区,wc是L'\0')。

    用例
    /* wcrtomb example */
    #include
    #include
    #include

    int main() {
      const wchar_t* pt = L"wcrtomb example";
      char buffer [MB_CUR_MAX];
      size_t length, i;
      mbstate_t mbs;

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

      while (*pt) {
        length = wcrtomb(buffer,*pt,&mbs);
        if ((length==0)||(length>MB_CUR_MAX)) break;
        putchar ('[');
        for (i=0;i     putchar (']');
        ++pt;
      }

      return 0;
    }
    该示例使用所选语言环境(在本例中为"C"语言环境)打印宽字符串转换为的多字节字符。
    输出: 

  • 相关阅读:
    7. SQL中函数的简介
    齐岳定制|二苯基环辛炔-聚乙二醇-丙烯酸酯|DBCO-PEG-Acrylates|DBCO-PEG-ACRL
    TDengine可通过数据同步工具 DataX读写
    Linux CPU线程绑核
    AI黑科技:名片识别革命,一键get轻松
    第5章——以程序方式处理MySQL数据表的数据
    VPS与云主机指南:了解五个主要区别
    前端数字计算精度问题
    后端程序员必备:书写高质量SQL的30条建议
    3D成像技术概述
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/127494586