CString 转化为 char *,LPSTR,LPCSTR,LPWSTR,LPCWSTR,WHAR*,string类型方法

6 篇文章 0 订阅

之前进行MFC编程的时候,总是被各种类型转换搞得头晕脑胀,索性自己写个小程序总结总结,代码如下:

CString str(“Hello”); //在VS2017中CString类型为宽字符型
CString str2(“WORLD”);

//CString 转化为LPSTR
LPSTR m_str_LPSTR;
//LPCWSTR:宽字符串指针
m_str_LPSTR = (LPSTR)(LPCWSTR)str;   //
char temp;
m_str_LPSTR++;
m_str_LPSTR++;
temp = *m_str_LPSTR;    //因为m_str_LPSTR是一个窄字符串指针,所以一次只能移动一个字节,而CString一个字符占两个字节,所以需要移动两次
//CString转为LPCWSTR
//下面试一下宽字符串指针
LPCWSTR m_str_LPWSTR;    //
m_str_LPWSTR = (LPCWSTR)str;
m_str_LPWSTR++;
//*m_str_LPWSTR = s;
temp = *m_str_LPWSTR;   //宽字符串指针只需要移动一次即可

//CString转为string
string m_str;
m_str = (LPCSTR)(CStringA)(str);    //string是标准C++扩充字符串操作的一个类,而CString是MFC操作字符串的一个类

//CString 转为LPSTR
LPCSTR m_lpcstr;
m_lpcstr= (LPCSTR)(LPCWSTR)str;

//CString 转为char*
//方法一
char* m_pc;
m_pc =(LPSTR) str.GetBuffer();   //getbuffer函数默认返回的是LPCWSTR型指针,需要对指针进行强制类型转换
m_pc++;
m_pc++;
temp = *m_pc;   

//方法二
char* m_pc2;
m_pc2 = (LPSTR)(LPCWSTR)str;   //LPSTR就是char*型指针

//CString 转为WCHAR*
WCHAR* m_pwc;
m_pwc =(LPWSTR)(LPCWSTR)str;

//突然突发奇想的想将指针转为int*
int* m_pint;
int len_int;
len_int = sizeof(int);  //sizeof操作符以字节形式给出了其操作数的存储大小,int型数据占四个字节
m_pint = (int*)(LPCWSTR)str; //m_pint的值为 = 0x00650048  正好是str所表示的字符的ascii码值

最后总结一下:
1.CString 类型的变量名首先强制转换为LPCWSTR指针类型,之后再将该指针类型强制转换即可,就可以随意转为其他类型了。或者可以通过GetBuffer()成员函数也可以返回LPCWSTR指针类型。
2.在转成窄字符指针后,注意指针需要移动两次才能指向下一个字符

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值