当前位置:主页   - 电脑 - 程序设计 - C/C++
COM编程入门2
来源:网络   作者:   更新时间:2012-02-27
收藏此页】    【字号    】    【打印】    【关闭

  wcstombs()
   这个CRT函数wcstombs()是个简化版,但它终结了WideCharToMultiByte()的调用,所以最终结果是一样的。其原型如下:
size_t wcstombs (
   char*     mbstr,
   const wchar_t* wcstr,
   size_t     count );

  以下是参数解释:

  mbstr

  接受结果ANSI串的字符(char)缓冲。

  wcstr

  要转换的Unicode串。

  count

  mbstr参数所指的缓冲大小。

  wcstombs()在它对WideCharToMultiByte()的调用中使用WC_COMPOSITECHECK | WC_SEPCHARS标志。用wcstombs()转换前面例子中的Unicode串,结果一样:

  wcstombs ( szANSIString, wszSomeString, sizeof(szANSIString) );

  CString

  MFC中的CString包含有构造函数和接受Unicode串的赋值操作,所以你可以用CString来实现转换。例如:

  // 假设有一个Unicode串wszSomeString...

  CString str1 ( wszSomeString ); // 用构造器转换

  CString str2;

  str2 = wszSomeString; // 用赋值操作转换

  ATL宏

  ATL有一组很方便的宏用于串的转换。W2A()用于将Unicode串转换为ANSI串(记忆方法是“wide to ANSI”——宽字符到ANSI)。实际上使用OLE2A()更精确,“OLE”表示的意思是COM串或者OLE串。下面是使用这些宏的例子:

  #include <atlconv.h>
// 还是假设有一个Unicode串wszSomeString...
{
char szANSIString [MAX_PATH];
USES_CONVERSION; // 声明这个宏要使用的局部变量
lstrcpy ( szANSIString, OLE2A(wszSomeString) );
}

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明