zoukankan      html  css  js  c++  java
  • TCHAR ,UNICODE,CHAR,wchar_t 来龙去脉

    大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,这个问题曾经搞的很混乱。为了统一,有必要把来龙去脉搞清楚。

     为了搞清这些函数,就必须理请几种字符类型的写法。char就不用说了,先说一些wchar_t。wchar_t是Unicode字符的数据类型,它实际定义在<string.h>里:
     typedef unsigned short wchar_t;
    不能使用类似strcpy这样的ANSI C字符串函数来处理wchar_t字符串,必须使用wcs前缀的函数,例如wcscpy。为了让编译器识别Unicode字符串,必须以在前面加一个“L”,例如:
     wchar_t *szTest=L"This is a Unicode string.";

     下面在看看TCHAR。如果你希望同时为ANSI和Unicode编译的源代码,那就要include TChar.h。TCHAR是定义在其中的一个宏,它视你是否定义了_UNICODE宏而定义成char或者wchar_t。如果你使用了TCHAR,那么就不应该使用ANSI的strXXX函数或者Unicode的wcsXXX函数了,而必须使用TChar.h中定义的_tcsXXX函数。另外,为了解决刚才提到带“L”的问题,TChar.h中定义了一个宏:“_TEXT”。

     以strcpy函数为例子,总结一下:
     .如果你想使用ANSI字符串,那么请使用这一套写法:
     char szString[100];
     strcpy(szString,"test");
     .如果你想使用Unicode字符串,那么请使用这一套:
     wchar_t szString[100];
     wcscpyszString,L"test");
     .如果你想通过定义_UNICODE宏,而编译ANSI或者Unicode字符串代码:
     TCHAR szString[100];
     _tcscpy(szString,_TEXT("test"));

  • 相关阅读:
    Logger.getLogger与LogFactory.getLog
    log4j详解
    游戏史上80重要创新(原资料来自17173)
    软件开发工具介绍之 6.Web开发工具
    JAVA NIO 简介
    Alan Kay 你需要认识的一个天才
    大学计算机学习路线
    软件开发工具介绍之 5. 计划管理
    软件开发工具介绍之 4. 建模工具
    关于最近“361强奸360强奸QQ”,且是光天化日之下
  • 原文地址:https://www.cnblogs.com/buffer/p/1445679.html
Copyright © 2011-2022 走看看