看流星社区

 找回密码
 注册账号
查看: 2092|回复: 0

unicode下各种类型转换 CString string char* int char[]

[复制链接]

该用户从未签到

发表于 2016-9-21 15:41:27 | 显示全部楼层 |阅读模式

unicode下各种类型转换 CString string char* int char[]

把最近用到的各种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;
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-19 03:45

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表