TCHAR char

来源:互联网 发布:java基础入门培训学校 编辑:程序博客网 时间:2024/04/30 03:07

因为C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串处理函数,比如:strlen和wcslen,分别用于处理两种字符串

中文名

TCHAR

出    

微软

类    

常规的ANSi编码

主要通过

通过define定义的字符串宏

目录

1定义

2使用原理

1定义编辑

TCHAR是通过define定义的字符串宏[1] 

2使用原理编辑

微软将这两套字符集及其操作进行了统一,通过条件编译(通过_UNICODE和UNICODE宏)控制实际使用的字符集,这样就有了_T("")这样的字符串,对应的就有了_tcslen这样的函数

为了存储这样的通用字符,就有了TCHAR:

当没有定义_UNICODE宏时,TCHAR= char,_tcslen =strlen

当定义了_UNICODE宏时,TCHAR= wchar_t , _tcslen = wcslen[1] 

当我们定义了UNICODE宏,就相当于告诉了编译器:我准备采用UNICODE版本。这个时候,TCHAR就会摇身一变,变成了wchar_t。而未定义UNICODE宏时,TCHAR摇身一变,变成了unsignedchar。这样就可以很好的切换宽窄字符集

tchar可用于双字节字符串,使程序可以用于中日韩等国语言文字处理、显示。使编程方法简化。  

 

c++如何拼接两个tchar字符串?

2013-01-17 21:56wangshinew |分类:C/C++|浏览2048

如:设:TCHAR* a="我们abc";TCHAR*  b="你们bcd";求:TCHAR*  c="我们abc你们bcd";最后结果必须是Tchar,而不是什么stringCstring

分享到:

2013-01-17 22:33

提问者采纳

TCHAR* a=_T("我们abc");TCHAR* b=_T("你们bcd"); int len_a = lstrlen(a);int len_b=lstrlen(b);TCHAR* c = new TCHAR[len_a+len_b+1];c[0]=_T('\0');lstrcat(c, a);lstrcat(c,b);// ...// after using c, free the memorydelete []c; 当采用ANSI编译时,TCHAR就是char当采用Unicode编译时,TCHAR就是w_char

 

void TcharToChar (constTCHAR * tchar,char * _char)  

{  

    int iLength;  

//?¨?Á?¨²¡è¨¨   

iLength =WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL, NULL);  

//?tchar¦Ì3?_char    

WideCharToMultiByte(CP_ACP,0, tchar, -1, _char, iLength, NULL, NULL);   

}  

//?TCHARÁaachar //*tcharº?TCHAR¤¨¤¨ª??ê?*_charº?char¤¨¤¨ª?? TcharToChar (const TCHAR * tchar, char *_char) { int iLength ; //?¨?Á?¨²¡è¨¨ iLength = WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL,NULL); //?tchar¦Ì3?_char WideCharToMultiByte(CP_ACP, 0, tchar, -1, _char, iLength, NULL,NULL); }

 

void CharToTchar (constchar * _char, TCHAR * tchar)  

{  

    int iLength;      

    iLength = MultiByteToWideChar (CP_ACP, 0,_char, strlen (_char) + 1, NULL, 0) ;  

    MultiByteToWideChar (CP_ACP, 0, _char,strlen (_char) + 1, tchar, iLength) ;  

}

 

C/C++  连接两个字符串

一: C风格字符串连接
#include <iostream>
using namespace std;

int main()
{
  const char *str = "hello ";
  const char *str2 = "world";
  const size_t len = strlen(str)+strlen(str2);
  char *n_str = new char[len+1];
  strcpy(n_str,str);
  strcat(n_str,str2);
  cout<<n_str<<endl;
  delete [] n_str;
  return 0;
}

|C++string类型字符串
#include <iostream>
#include <string>
using namespace std;

int main()
{
  const string str="hello ";
  const string str2="world";
  string n_str;
  n_str = str;
  n_str +=str2;
  cout<<n_str<<endl;
  return 0;
}

0 0
原创粉丝点击