一、基础知识
英文编码:1个字符对应1个字节(多字节)
中文编码:1个字符对应多个字节(宽字节)
- Unicode
- utf-8 一个字符对应3个字节
- GBK 一个字符对应2个字节
二、windows编程中的字符编码
MFC编程时,如下代码可能会导致报错
MessageBox("qwq");
这是因为字母默认是多字节编码,而项目属性使用的字符集一般为宽字节(右击项目,最下面找到属性,高级->字符集 可查看项目使用的编码方式)
所以这时需要进行编码方式的转换,有以下两种方法:
// 1. 使用TEXT进行转换(TEXT具备自适应编码的转换能力)
MessageBox(TEXT("qwq"));
// 2. 在字符串前添加L,告诉程序使用宽字节的编码方式处理以下字符串
MessageBox(L"qwq");
三、Windows字符串的一些操作
- 统计字符串长度
// 统计多字节字符串长度
int num = 0;
char * p1 = "qwq";
num = strlen(p1);
// 统计宽字节字符串长度
wchar_t * p2 = L"qwq";
num = wcslen(p2);
- char* 与 CString之间的转换
// char* -> CString
char * p3 = "qwq";
CString str = CString(p3);
// CString -> char*
CStringA tmp;
tmp = str;
char* p4 = tmp.GetBuffer();
string和CString之间是无法相互转换的,因此需要char*作为桥梁