• C++下字符串转换


    引用自:http://blog.sina.com.cn/s/blog_a98e39a20101ari9.html

     

    把最近用到的各种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;

     

  • 相关阅读:
    JavaScript 中的构造函数
    sql链路服务器提示该事务管理器已经禁止了它对远程/网络事务的支持
    Operating System:操作系统启动总结
    Operating System:信号量
    Operating System:管程相关概念
    ACwing(基础)--- 线性DP、区间DP
    ACwing(基础)--- C++STL库
    ACwing(基础)--- 并查集、堆
    ACwing(基础)--- 数组模拟链表、栈、队列
    Vue 学习笔记2 data数据对象
  • 原文地址:https://www.cnblogs.com/ccjcjc/p/5633597.html
Copyright © 2020-2023  润新知