zoukankan      html  css  js  c++  java
  • Unicode与Ansi互转

     1 BOOL CTool::AnsiToUnicode(const char *pSrc, CString &strResult)
     2 {
     3 #ifndef _UNICODE
     4     return FALSE;
     5 #endif
     6     int nLen=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pSrc,-1,NULL,0);
     7     strResult.Empty();
     8     if(nLen==0)
     9         return FALSE;
    10     wchar_t* pResult=new wchar_t[nLen];
    11     MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pSrc,-1,pResult,nLen);
    12     strResult.Format(_T("%s"),pResult);
    13     delete[] pResult;
    14     pResult=NULL;
    15     return TRUE;
    16 }
    17 
    18 wchar_t* CTool::AnsiToUnicode(const char *szStr)
    19 {
    20     int nLen=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,szStr,-1,NULL,0);
    21     if(nLen==0)
    22         return NULL;
    23     wchar_t* pResult=new wchar_t[nLen];
    24     MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,szStr,-1,pResult,nLen);
    25     return pResult;
    26 }
    27 
    28 char* CTool::UnicodeToAnsi(const wchar_t *szStr)
    29 {
    30     int nLen=WideCharToMultiByte(CP_ACP,0,szStr,-1,NULL,0,NULL,NULL);
    31     if(nLen==0)
    32         return NULL;
    33     char* pResult=new char[nLen];
    34     WideCharToMultiByte(CP_ACP,0,szStr,-1,pResult,nLen,NULL,NULL);
    35     return pResult;
    36 }

    后面两个函数返回一个new的指针,接收用完后需要自己手动释放

    char* 到string :直接初始化或者赋值

    string到char*: const char *str = s.c_str();
    之后s改变,str将随之改变,所以最好将s重新拷贝一份


    不允许vector初始化数组,但是可以用数组初始化vector
    int int_arr[] = { 1,2,3,4,5 };
    vector<int> ivec(begin(int_arr), end(int_arr));
    数组的begin和end在iterator头文件中

    尽量使用标准库类型,而非数组
    尽量使用vector和迭代器,避免使用内置数组和指针
    尽量使用string,避免使用C风格的基于数组的字符串

  • 相关阅读:
    mysql 15道语句练习题
    分组查询以及where和having的区别
    java初学复习
    Working with Excel Files in Python
    PIP常用命令
    pip install 提示代理连接失败原因及解决办法
    关于Encode in UTF-8 without BOM
    360极速浏览器Onetab插件存储位置
    使用夜神模拟器录制脚本
    微信小程序开发经验总结
  • 原文地址:https://www.cnblogs.com/xslwm/p/7173091.html
Copyright © 2011-2022 走看看