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"));

  • 相关阅读:
    本周总结
    团队组队
    ListView之checkbox错位问题解决
    ListView
    ScrollView(滚动条)
    elementui中自定义Select选择器样式自定义
    element-ui中Select 选择器列表内容居中
    element-ui中Select 选择器去除点击时的淡蓝色边框
    vue和uni-app不同的类型绑定不同的类名
    根据年月日获取星期几
  • 原文地址:https://www.cnblogs.com/buffer/p/1445679.html
Copyright © 2011-2022 走看看