zoukankan      html  css  js  c++  java
  • 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)='\0'; //要手动加上结束符
    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;

  • 相关阅读:
    扫面线模板
    (动态规划、栈)leetcode 84. Largest Rectangle in Histogram, 85. Maximal Rectangle
    tmux 常见命令汇总
    leetcode 221
    leetcode 319 29
    (贪心)leetcode 392. Is Subsequence, 771. Jewels and Stones, 463. Island Perimeter
    leetcode 982 668
    Python import 同文件夹下的py文件的函数,pycharm报错
    Windows里Anaconda-Navigator无法打开的解决方案
    Windows下 gpu版 Tensorflow 安装
  • 原文地址:https://www.cnblogs.com/callback/p/4581261.html
Copyright © 2011-2022 走看看