• unicode下各种类型转换CString、string


    把最近用到的各种unicode下类型转换总结了一下:

    1、string转CString

    string a=”abc”;

                  CString str=CString(a.c_str());

                  或str.format("%s", a.c_str())

    2、int转CString

        Int a;

    CString Cstr;

                  Cstr.Format(_T("%d"),a);

    3、char 转 CString 

    CString.format("%s", char*);

    例:

                  char  szPath[];

                  CString Cstr;

                  Cstr.Format(_T("%s"),szPath);

    4、CString转string
                  CString C_str=_T("abc");

    string str((LPCSTR)CStringA(C_str));

                  或string str=CStringA(C_str);

                  或通过char*中转

           CString m_str(_T("qwerg"));

           char *chr=new char[m_str.GetLength()+1];

           WideCharToMultiByte(CP_ACP,0,m_str.GetBuffer(),-1,chr,m_str.GetLength()+1,NULL,NULL);

           string str=chr;

    或者CString C_str = _T("ooqoqoq");

     //   setlocale(LC_ALL, "chs");

          char *p = new char[C_str.GetLength()+1];

          wcstombs(p,C_str,C_str.GetLength()+1);

          string str = p;

           用下面代码检测:

                  MessageBox((CString)str.c_str());

    5、CString转const char*

                  CString a=_T(“  ”);

                  CStringA b(a);

                  const char *c=new char(50);

              c=b.GetString();

    或者:

    CString FilePath=_T(“   ”);

           int len=WideCharToMultiByte( CP_ACP,0,FilePath.AllocSysString(),FilePath.GetLength(),NULL,0,NULL,NULL);

                  char * pAscii =new char[len];

    len=WideCharToMultiByte(CP_ACP,0,FilePath.AllocSysString(),FilePath.GetLength(),pAscii,len+1,NULL,NULL);

                  pAscii[len]=0;    

                  const char* path=(const char*)pAscii;

    6、CString转char*

           CString strPath = _T("啊啊啊");

           int nLength = strPath.GetLength();

           int nBytes = WideCharToMultiByte(CP_ACP,0,strPath,nLength,NULL,0,NULL,NULL);

           char* VoicePath = new char[ nBytes + 1];

           memset(VoicePath,0,nLength + 1);

           WideCharToMultiByte(CP_OEMCP, 0, strPath, nLength, VoicePath, nBytes, NULL, NULL);

           VoicePath[nBytes] = 0;

     

    7、CString转int

                  CString str=_T("123");

                  int b=_ttoi(str);

                  或者转成string,再转int

    8、char 转 string 
    string s(char *);

    9、char[]转LPWSTR

    直接强制转换

    10、string转char*

    把string转换为char* 有3中方法:
    1.data
    如:
    string str="abc";
    char *p=str.data();
    2.c_str
    如:string str="gdfd";
        char *p=str.c_str();
    3. copy
    比如
    string str="hello";
    char p[40];
    str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
    *(p+5)=''; //要手动加上结束符
    cout <</span> <</span>p;

    11、string转int

            string num;

            int a=atoi(num.c_str());

     12 、int转string

    #include

          stringstream ss;

    int n = 123;
        string str;
        ss<<n;
        ss>>str;

  • 相关阅读:
    数据分析三剑客之pandas
    python神器 Jupyter Notbook
    数据分析三剑客之numpy
    MySQL之数据备份与还原
    爬虫之增量式爬虫
    文件相关命令(find,tree,tar)文件属性信息 date
    系统通配符号、系统正则符号,grep
    sed命令
    系统用户权限,系统权限位,用户相关命令
    根下目录及目录内详细文件
  • 原文地址:https://www.cnblogs.com/bigcat814/p/4736255.html
Copyright © 2020-2023  润新知