MFC中字符类型转换

1. MFC

  • 以C++类的形式封装了Windows API

  • 一个编程框架

      c++支持两种字符串,常规的ANSI编码和Unicode编码
      TCHAR:字符设置为ANSI,相当于char;
      		设置为Unicode,相当于wchar_t.
    
  • 编码
    ANSI使用8位二进制编码
    Unicode为所有字符都分配了一个唯一的数字编号,6位十六进制
    UTF是Unicode的实现方式,UTF-8使用变长字符,当时单字节的符号时,和ASCI编码是一样的

2. _T和L
L作用:告诉编译器,字符串按宽字符存储。
注意:Unicode是宽字符编码的一种,严格说Unicode是字符集(字符和而精致的对应关系,为每个字符分配唯一编号)
字符编码:如何将字符编号存储到计算机(UTF-87即Unicode转换格式,至少使用8bit存储字符)
_T(""):是一个宏,_T宏可以把引号里面的字符串根据你的环境设置,使得编译器会根据编译目标环境选择合适的字符处理方式。

3. TCHAR
TCHAR它在采用ANSCLL的编码中表示单字符,在UNICODE编码中表示双字符

4. CString

	数据类型为wchar_t * 或者char *   (因处于的环境编码)
	
	Unicode下需要L或者_T赋值字符串
  • wchar_t:C/C++字节类型,宽字节字符(无符号数且一个字符占两个字节)

      wchar_t mm[20] = L"HELLO WORLD";
    
  • CString的getString:生成const char *或 const wchar_t *指针(因处于的环境编码)

  • CString的getBuffer:用于修改CString中的内容,一个指向对象的(以null结尾的)字符缓冲区的LPTSTR指针

  • String的c_str(): 返回一个const char*

  • Format:格式化字符串

      %s表示char*,%u表示unsigned int,%hd表示short,%hu表示unsigned short,%hhd表示char,%hhu表示unsigned char,%f表示float等
    

5. LPSTR、LPCSTR

	LPCSTR     32-bit   指针,指向一个常量字串    const char*或const wchar_t *
	
	LPSTR        32-bit   指针,指向一个字串   char*或wchar_t *
	
	LPCTSTR   32-bit   指针,指向一个常量字串。此字串可移植到Unicode   和DBCS   
	
	LPTSTR      32-bit   指针,指向一个字串。此字串可移植到Unicode   和DBCS

6. CString与string

1.string->CString
//多字节下
	CString cstr=str.c_str();

	cstr . format ( " %s " , str.c_str ()) ; //在Unicode下
	 CString cstr=CA2W(str.c_str());
2.CString->string
//多字节下
CString cstr=_T("as");
string str=cstr.GetString();
//Unicode下
string str=CW2A(cstr.GetString());
  • CString与char*、LPTSTR
1.char*->CString
    CString a;
    char* ch="lll";
    a=ch;

2.CString->LPTSTR
 LPTSTR ip;
 ip=(LPTSTR)(LPCTSTR)cstr;
  1. 字符类型输出
  • CString输出
 CString str1(_T("baidu"));
     
    //wcout << str1.GetString() << endl;
    cout << str1.GetString() << endl;
    创建CString对象
    因为<<无法重载CString输出,所以用getString()获取字符串再输出,再Unicode下是wchar_t用wcout
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值