VS2013各种类型转换

来源:互联网 发布:ppt美化大师mac版 编辑:程序博客网 时间:2024/05/22 12:54


1.CString到const char *的转换 

一种方法:

CString str=_T("这是我的测试程序。");

// 先得到要转换为字符的长度

const size_t strsize=(str.GetLength()+1)*2; // 宽字符的长度;

char * pstr= new char[strsize]; //分配空间;

size_t sz=0;

wcstombs_s(&sz,pstr,strsize,str,_TRUNCATE);

int n=atoi(const char*)pstr); // 字符串已经由原来的CString 转换成了 const char*

//没有这番转换会报错,无法将LPCTSTR或CString 转换为const char*


另一种:

const char * a;

CString b;

//a=b;//不存在从CSring到const char *的适当转换函数

a=(const char *)b.GetBuffer();




2.从const char [ ]转换为const wchar_t * 
CString m_strSQL;

CString m_strSeek;//一编辑框关联的成员变量

//m_strSQL.Format("book_name'%s'",m_strSeek);//报错,不能将参数 1 从“const char [14]”转换为“const wchar_t *”


解决方法:

修改为:m_strSQL.Format(L"book_name'%s'",m_strSeek);


m_strSQL.Format(_T("book_name\'%s\'"),m_strSeek);

char 占用一个字节 , wchar_t占用两个字节。所以要转换一下。

不管是不是用unicode,都使用_T("")宏比较好,因为_T("")会自己转换




3.const char * 到CString 
const char * 到CString可以进行直接转换。

const char * a;

CString b;

b=a;//通过



4.CString 转化为string 

简单的

string a;

CString b;

a = (CStringA)b;

另一种
# include <string>
#include <cstdlib>
using namespace std;

以上是需要在MFC工程中添加的头文件

string CStringToString(CString cstr)

{

string str;

setlocale(LC_ALL,"chs");

wchar_t wch[255];

char temp[255];

wcscpy(wch,cstr.GetString());

wcstombs(temp,wch,254); 

str.append(temp); 

return str;

}



5.string 转化为CString 
string str=“hello中文”;

CString cstr=str.c_str();


6.char*转化为string 
string a;

char* b;

string.append(char *)即可


7.char * 转化为string 
string a;

char*b = "1nihjkk" ;

a.append(b);
0 0