zoukankan      html  css  js  c++  java
  • 宽字节与窄字节之间的转换(转载)

    宽字节转单字节 :size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count );

    单字节转宽字节 :size_t mbstowcs( wchar_t *wcstr, const char *mbstr, size_t count );

    上面这两个是标准C++的,下面两个好像是微软的函数。不过上面两个函数只能一个一个的转换,也就是说一次只能转换一个字符。下面两个方法就是 宽字符串与单字节字符串之间的转换。

    宽字节转多字节 :WideCharToMultiByte   //其实这里的多字节就是我们说的char

    多字节转宽字节 :MultiByteToWideChar   //多字节也就是ASCII单字节

    这四种方法。

    下面给一个 宽字符串 转换为 char字符串 的例子。

      BSTR devname;   //olewchar 其实就是wchar

      char *name=NULL;

          pNCP->get_Name(&devname);

          DWORD n=WideCharToMultiByte(CP_OEMCP,NULL,devname,-1,NULL,0,NULL,FALSE);

          name=new char[n];

          WideCharToMultiByte(CP_OEMCP,NULL,devname,-1,name,n,NULL,FALSE);

          cout<<name<<endl;

          delete [] name;

    下面是将 char字符串 转换为 unicode字符串,也就是宽字符。

      char sText[20] = {"其实我就是所谓的多字节字符串"};

      DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, sText, -1, NULL, 0);

      wchar_t *pwText;

      pwText = new wchar_t[dwNum];

      MultiByteToWideChar (CP_ACP, 0, pwText, -1, sText, dwSize);

      if(!pwText) {

         delete []pwText;

      }

  • 相关阅读:
    python-生成器
    python—迭代器
    python—递归函数
    CentOS关闭防火墙
    OpenHCI
    USB电源管理
    USB相关的网络资料
    USB Packet Types
    USB描述符概述
    Core Java Volume I — 1.2. The Java "White Paper" Buzzwords
  • 原文地址:https://www.cnblogs.com/seer/p/3126721.html
Copyright © 2011-2022 走看看