MultiByteToWideChar 和WideCharToMultiByte的使用
来源:互联网 发布:2345看图王apk软件 编辑:程序博客网 时间:2024/06/05 17:44
MultiByteToWideChar 和WideCharToMultiByte的使用,其实就是ANSI 和UNICODE 之间的转换:
在vs2010 中,当在配置属性中设置字符集为“使用Unicode字符集时,那么你就选择了使用宽字符,使用宽字符还是有很多好处的,这个在《windows程序设计》中有讲到。
那么说下两个函数的使用:
1) MultiByteToWideChar 的使用
char *mChar = new char[strLen+1];
mChar 中存储的值为:
mChar[0] = 0x6e; ‘n'
mChar[1]=0x69; ‘i’
mChar[2]=0x68; ‘h’
mChar[3]=0x61; ‘a’
mChar[4]= 0x6f; ‘o’
mChar[5]=0xbb;
mChar[6]=0xb6; ”赵“
DWORD mNum = MultiByteToWideChar(CP_ACP,NULL,mChar,-1,NULL,0);
TCHAR *pwText;
pwText = new TCHAR[mNum];
MultiByteToWideChar(CP_ACP,NULL,mChar,-1,pwText,mNum);
2)WideCharToMultiByte 的使用
CString str = _T("nihao赵");
DWORD mNum = WideCharToMultiByte(CP_ACP,NULL,str,-1,NULL,0,NULL,FALSE);
char *mChar = new char[mNum];
WideCharToMultiByte(CP_ACP,NULL,str,-1,mChar,mNum,NULL,FALSE);
自己也写过类似的代码来完成这个过程,但是之前测试发现当从界面获得的串为汉字和字母混着时,计算长度会出错。
另记:
程序中需要将自绘图元存储到数据库中,用了_variant_t varBlob ,因此之前要将已有的图元信息转化为字节序列,在将文本类对象直接类型转换后存储,可是在取出时,由于CString类型的问题,无法得到,因此就想到了方法 :
一、将CString 的值单独转化为字节存储,然后再取出,给转换得到的类对象赋值,没有实现,原因:可存储,可取出,但是,当给有强制转换得到的类对象中的CString 赋值时,总是报错:
CStringData* pNewData = pStringMgr->Reallocate( pOldData, nLength, sizeof( XCHAR ) );
指到此处就无法运行,网上说是CString内存问题,具体自己也没找到解决办法。
二、既然是CString在类型转换时,出的问题,那么在存储和读取时,自己将这个类进行转换来实现的,虽然有些麻烦,但知道整个过程内存中都存了些什么,而且需要将含有CString 变量的类对象都要自己转化。其实之前也想过在类中声明char* 指针来存储数据,但觉得指针。。。就没用。
- MultiByteToWideChar 和WideCharToMultiByte的使用
- WideCharToMultiByte()和MultiByteToWideChar()函数的使用
- MultiByteToWideChar与WideCharToMultiByte的使用
- MultiByteToWideChar和WideCharToMultiByte的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- (ZT)WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- SurfaceView和View最本质的区别
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- Object -C 语言语法速记代码。
- 使用sp_executesql将查询作为一个明确参数化的查询来执行
- Visual Studio 2005-如何添加 需要重载 的虚函数
- MultiByteToWideChar 和WideCharToMultiByte的使用
- 【IE6的疯狂系列】IE6 BUG大全
- LinuxC的调试工具
- Unity JavaScript 解析json
- 10位数程序实现输出最大值
- 调和分析
- 对oracle锁几种模式的理解
- 关于mysql中中文的显示
- Xcode中使用svn时,报证书验证错误Error validating server certificate for