wchar_t 和 char 编程问题

  windows 编程遇见最多问题莫过于这俩字符编码格式了。 有时候工程中用unicode 编码。而调用一些老版本的库 这些库采用多字符编码。在用时需要使用到WideCharToMultiByte 函数进行转换。 一次我在合别人代码到工程中时候看到广泛采用"char"形式的字符串,然后在较高版本的vs 中工程基本都是 unicode 编码。

1> 一种方法是 把原先代码编译成库函数直接调用  改动少;

2> 另一种方法是更改源代码系统调用函数为多字符 微软一般系统调用有两种形式,采用宏定义在不同平台使用系统调用;

     FuctionNameA(...)

   FuctionNameW(...)

  #ifdef  _UNICODE

    #define  FuctionName  FuctionNameW  

  #else

   #define  FuctionName  FuctionNameA  

  #endif   

  所以只能显示的更改函数FuctionName  =》 FuctionNameA 完成转化。

3> 使用TCHAR类型  头文件<tchar.h>。

#ifdef  _UNICODE

    #define  TCHAR  wchar_t  

    #define _T (x )     L ## x   

        ...

#else

   #define  TCHAR  char

   #define _T (x )  x  

        ...

#endif 

    ... 为相应字符集操作函数宏定义 所有函数在博客http://blog.sina.com.cn/s/blog_4e3c6b480100r5go.html 中可以查阅。

更改后以后在windows 编程无论ascall 还是unicode 都可以拿出来直接使用方便。

总结:使用windows api 编程最好规范,要不一改再改浪费时间。windows编程建议使用TCHAR

  

    

      

原文地址:https://www.cnblogs.com/wolfrickwang/p/3200918.html