MFC中Unicode与多字节编码中遇到的CString与char或char*的转化问题
来源:互联网 发布:java工程师简历范文 编辑:程序博客网 时间:2024/05/21 17:30
博主在MFC初期是遇到了一个初学MFC的人很多都会遇到的一个基本问题:
就是Unicode或多字节字符集下CString和Char的转化问题。其实这种问题解决的方式很简单,两种基本形式记住即可:
1.unicode下,转换字符串形式为_T("HelloWorld");
2.MBCS下,转换字符串的形式为"HelloWorld"
多字节字符集 (MBCS) 是一种替代 Unicode 以支持无法用单字节表示的字符集(如日文和中文)的方法。为国际市场编程时应考虑使用 Unicode 或 MBCS,或使程序能够通过更改开关来生成支持两种字符集之一的程序。
最常见的 MBCS 实现是双字节字符集 (DBCS)。一般来说,Visual C++(尤其是 MFC)完全支持 DBCS。
有关示例,请参见 MFC 源代码文件。
对于语言使用大字符集的市场所使用的平台,代替 Unicode 的最佳方法是 MBCS。MFC 通过使用可国际化的数据类型和 C 运行时函数来支持 MBCS。您也应在自己的代码中这样操作。
在 MBCS 下,字符被编码为单字节或双字节。在双字节字符中,第一个字节(即前导字节)表示它和下一个字节将被解释为一个字符。第一个字节来自留作前导字节的代码范围。哪个范围的字节可以用作前导字节取决于所使用的代码页。例如,日文代码页 932 使用 0x81 到 0x9F 范围内的字节作为前导字节,而朝鲜语代码页 949 则使用其他范围的字节。
MFC中,Unicode和多字节字符集下 CString和char的转化
unicode下
得到CString的长度
CString strtest=_T("caoeeks");
wcslen(strtest);
wcslen(_T("123"));
多字节字符集下
strlen(CString str);
CString转TCHAR
CString str = "aklsdjf ";
TCHAR* tch = (LPTSTR)(LPCTSTR)str;
lstrcpy(data, abc);
sprintf(data, "%s ", (LPCTSTR) abc);
sprintf(data, abc);
char* 和 cstring的转换
char * charP;
CString strP;
(1)char* -> cstring
strP = CString(charP)
(2)cstring -> char*
WideCharToMultiByte(CP_OEMCP,0,(LPCTSTR)strP,-1,charP,260,0,false);
CString和 int的转换
CString strNum=...
int value = _ttoi(static_cast<LPCTSTR>(strNum));
或者
int value = _ttoi(strNum);
多字节字符集下
Cstring转化为char
转化成数组:
Cstring str=”convert”;
char char_str [512];
strncpy_s(char_str,(LPCTSTR)str_sum,sizeof(char_str));
转化成char指针:
char * ch_a =(char*)str.GetBuffer(str.GetLength());
char转化为Cstring
Cstring str;
char szBuff[2048];
str.Format("%s",szBuff);
CString 转 int :
n=atoi(str);
以上是我复制别人的博客而来,觉得很有意义,就和大家分享,因为这个问题在我做MFC与数据库链接的时候,经常会出现字符不能转化,从数据库中读取数据然后显示的时候出现乱码现象。
- MFC中Unicode与多字节编码中遇到的CString与char或char*的转化问题
- MFC中,Unicode与多字符集下CString与char或char*等的转化
- MFC中,Unicode和多字节字符集下 CString和char的转化
- MFC中,Unicode和多字节字符集下 CString和char的转化
- MFC中,Unicode和多字节字符集下 CString和char的转化
- MFC中Cstring与char *的转换
- MFC中Cstring与char *的转换
- MFC中Cstring与char *的转换
- VC++中字符串转换CString, char*, BSTR, 多字节,unicode字符集转换的问题
- cstring与char *的转化
- UNICODE 下CString与char*的相互转化
- (文件拷贝)多字节与Unicode字节状态下 CString转换Char的方法
- unicode与多字节工程,char与WCHAR_T转化
- CString与char*转换(Unicode和多字节字符集)
- 关于MFC程序中CString转char*与char*转CString的几个问题
- MFC中CString与Char类型字符串的相互转换
- MFC中 CString与Char[] 的相互转换
- MFC中Cstring与char * string 的转换
- Android 使用Parcelable传递对象
- 盘点即时战略游戏中高实用性寻路算法
- java151229ExceptionTest
- 2016-01-06 09:42:53.547:WARN:oejs.HttpChannel:qtp2109938810-27: Could not send response error 500: j
- ES6学习——新的语法:Symbols——Symbol.toPrimitive,Symbol.hasInstance,Symbol.toStringTag,Symbol.species
- MFC中Unicode与多字节编码中遇到的CString与char或char*的转化问题
- Spring+Hibernate声明事务
- java自动装箱拆箱总结
- UE4 Hello Slate
- three.js学习笔记 基础1_1
- java151229Demo异常在父子类中的覆盖问题
- [Phonegap+Sencha Touch] 移动开发74 日期时间控件
- nodejs中的underscore.js
- poj-1989 The Cow Lineup