本文章总结自黑马程序员视频:
- 英文 1个字符对应1个字节 多字节
- 中文 1个字符对应多个字节 宽字节 Unicode 比如(1)utf-8一个字符3个字节 (2)GBK 一个字符2个字节
MFC多字节转为宽字节
TEXT、TCHER、_T是由自适应编码转换,L("")多字节转宽字节
统计字符串长度方法
1. 统计char*多字节用strlen()
char * p = "aaaa";
int num = strlen(p);
2. 统计宽字节的字符串长度用wcslen
wchar_t * p2 = L"bbbb";
int num = wcslen(p2);
char * (C字符串数组) 、string(C++)与 CString(MFC)之间的转换
1. char* -> CString直接CString()
char * p3 = "ccc";
CString str = CString(p3);
2. CString -> char *用GetBuffer()
CStringA tmp;
tmp = str;
char * pp = tmp.GetBuffer();
3. char*转string用c_str()
char*是string与CString之间转换的桥梁,string中c_str()返回一个指向正规C字符串的指针常量。
在c语言中没有string类型,为了与c语言兼容,必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式
char c[20];
string s="1234";
strcpy(c,s.c_str());
注:使用strcpy()函数 来操作方法c_str()返回的临时指针,不能对其进行操作
4. char*转string直接赋值即可
string s;
char *p = "hello";//直接赋值
s = p;
LPCSTR与CString相互转换
1.LРСЅТRWіnЗ2和VС++所使用的一种字符串数据类型 , L表示lоng , Р表示指针 , С表示常量 , ЅТR表示字符串
2.LPCSTR转CString :
LPCSTR lpStr="test":
CString str(lpStr);
3.CString转LPCSTR:
CString str("test");
LPCSTR lpStr = (LPCSTR)str;