字符串类型和转换这块是很多新手刚开始比较懵逼的问题,我初学的时候也是琢磨了好久。
理解大多数新手的难处,所以我后来出了一套专门针对新手学习字符串的教程:《实用VC编程之玩转字符串》
有时间可以看看:
https://www.cctry.com/forum-153-1.html
问题一:多字节就是窄字节的,正常是1个字节表示数字或者字母,2个字节表示一个汉字,缺点是多字节的中文界面的程序在日文或者韩文的系统上会显示乱码。Unicode使用2个字节表示一个字符,缺点是占用空间大,优点就是解决了多字节的缺点;
问题二:CString是ATL中微软封装的一套字符串处理类,内部是TCHAR类型的指针,会根据当前工程的编码自动识别是多字节还是Unicode。char 是C/C++中默认的字符类型,string 是 C++ 标准模板库STL中的字符串模板类,默认也是多字节的。
如果CString是宽字节的,想转成char这种多字节的,方法有多种,具体见:
https://www.cctry.com/thread-297540-1-1.html
问题三:三个类型不同,但是都有多字节和宽字节版本:CString自然是自适应了,char 是窄字节的,wchar_t 就是宽字节的,string 是窄字节的,wstring 是宽字节的。