• VC++中通过MultiByteToWideChar将string|char*转换为wstring|wchar_t*


    函数原型:
    int MultiByteToWideChar(
      UINT CodePage, 
      DWORD dwFlags,         
      LPCSTR lpMultiByteStr, 
      int cbMultiByte,       
      LPWSTR lpWideCharStr,  
      int cchWideChar        
    );
    
    参数说明:
    1、CodePage
    指定要转换成的字符集代码页,它可以是任何已经安装的或系统自带的字符集,可选择以下代码页:
    CP_ACP         //当前系统ANSI代码页 
    CP_MACCP       //当前系统Macintosh代码页 
    CP_OEMCP       //当前系统OEM代码页,一种原始设备制造商硬件扫描码 
    CP_SYMBOL      //Symbol代码页,用于Windows 2000及以后版本
    CP_THREAD_ACP  //当前线程ANSI代码页,用于Windows 2000及以后版本
    CP_UTF7  //UTF-7,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL 
    CP_UTF8  //UTF-8,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL
    
    2、dwFlags
    指定是否转换成预制字符或合成的宽字符,对控制字符是否使用像形文字,以及怎样处理无效字符:
    MB_PRECOMPOSED //总是使用预制字符,即有单个预制字符时,就不会使用分解的基字符和不占空间字符。此为函数的
    
    默认选项,不能和MB_COMPOSITE合用 
    MB_COMPOSITE   //总是使用分解字符,即总是使用基字符+不占空间字符的方式 
    MB_ERR_INVALID_CHARS //设置此选项,函数遇到非法字符就失败并返回错误码ERROR_NO_UNICODE_TRANSLATION,否则
    
    丢弃非法字符 
    MB_USEGLYPHCHARS //使用像形字符代替控制字符
    
    3、lpMultiByteStr //要转换的字符串
    4、cbMultiByte    //要转换字符串的长度,-1表示转换到字符串结尾
    5、lpWideCharStr //接收转换后输出的宽字符串的缓冲区
    6、cchWideChar    //输出缓冲区大小,如果为0,lpMultiByteStr将被忽略,函数将返回所需缓冲区大小而不使用
    
    lpWideCharStr
    
    返回值:
    为0表示调用失败;当cchWideChar为0时,函数将返回所需缓冲区大小
    
    下面来看看将string|char*转换为wstring|wchar_t*的例子:
    //string转换为wstring:
    string str=_T("测试代码");
    int size=MultiByteToWideChar(CP_ACP,0,str.c_str(),-1,NULL,0);
    wchar_t *ch=new wchar_t[size+1];
    if(!MultiByteToWideChar(CP_ACP,0,str.c_str(),-1,ch,size))
    {
        return false;
    }
    wstring wstr=ch;
    
    
    //char*转换为wchar_t*char *str=_T("测试代码");
    int size=MultiByteToWideChar(CP_ACP,0,str,-1,NULL,0);
    wchar_t *ch=new wchar_t[size+1];
    if(!MultiByteToWideChar(CP_ACP,0,str,-1,ch,size))
    {
        return false;
    }
  • 相关阅读:
    4步搞定:系统必备的安装位置未设置为组件供应商的网站,无法在磁盘上找到 dotNetFx40LP_Client_x86_x64cs.exe 问题的解决方案 VS2010 SP1 简体中文测试通过,繁体未测试
    SilverLight Expression 140小时视频讲座
    获取本地IP铁通也可以
    USB转485转换器
    继电器控制板
    远程抄表解决方案汇总
    Silverlight 鼠标滚轮组件“Silverlight.FX”
    Silverlight边学边写之一“Silverlight+Webservice+Dataset”综合应用
    企业库缓存类(EnterpriseLibrary CacheHelper )
    Silverlight Toolkit 正式版今天发布啦!
  • 原文地址:https://www.cnblogs.com/callback/p/4248025.html
Copyright © 2020-2023  润新知