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;
- 字符类型输出
- CString输出
CString str1(_T("baidu"));
//wcout << str1.GetString() << endl;
cout << str1.GetString() << endl;
创建CString对象
因为<<无法重载CString输出,所以用getString()获取字符串再输出,再Unicode下是wchar_t用wcout