因为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:56 wangshinew |分类:C/C++ |浏览2048次

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

分享到:

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 memory
delete []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转Áa为achar //*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;
}

TCHAR char相关推荐

  1. TCHAR char wchar_t PTSTR PCSTR printf() wprintf()——_tprintf()解析

    TCHAR char wchar_t PTSTR PCSTR printf() _tprintf() 晕菜了吧? 转来一篇文章为大家解惑... Petzold的Programming Windows的 ...

  2. String,CString,TCHAR*,char*之间区别和联系

    最近老用到Cstring, TCHAR*, char*的转换. 找到一篇写得蛮详细的. 引用过来, 方便自己以后查阅. char是类型TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底 ...

  3. TCHAR char wchar_t 的区别

    有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,有必要把来龙去脉搞清楚. 为了搞清这些函数,就必须理请几种字符类型的写法.char就不用说了,先说一些wchar_t.wchar_ ...

  4. VC++中的char,wchar_t,TCHAR(转载)

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

  5. (C++)wchar_t 转 string / TCHAR转为char/判断是否进程运行/获得目标进程的入口

    首先是wchar_t转string void Wchar_tToString(string& szDst, wchar_t* wchar) {wchar_t* wText = wchar;DW ...

  6. VC中char,TCHAR,WCHAR总结

    char,TCHAR,WCHAR区别 #ifdef UNICODE typedef wchar_t TCHAR; #else typedef unsigned char TCHAR; #endif t ...

  7. TCHAR和CHAR类型的互转

    Win32中CStdString 是需要TCHAR类型的值才可以赋值的,而很多文件读取时FILE的fopen函数之类的需要的是CHAR,我们需要把它们互转,这里我在网上找到了一个比较方便的方法 TCH ...

  8. [转]VC中char,TCHAR,WCHAR总结

    char,TCHAR,WCHAR区别 #ifdef   UNICODE      typedef   wchar_t   TCHAR; #else      typedef   unsigned   ...

  9. tchar与char不兼容_TCHAR与char的转换 | 学步园

    最近开始看孙鑫老师的c++视频,在跟着视频做东西的时候,碰到了这个问题,视频中应该没有定义UNICODE,所以它里面的字符串就是简单用" "就行了,但是我在自己电脑上编译时,就碰到 ...

最新文章

  1. 你朋友圈里的广告是怎么做到合你胃口的?
  2. 删除DataTable中列重复的行
  3. java linux urlencode_java字符编码转换研究(转)
  4. cocos2d-x3.0 实现HTTP请求GET、POST
  5. Mapx的VC开发实践
  6. kettle etl 入门第一篇
  7. CentOS7上使用bind9搭建DNS主从服务器
  8. Python零基础学习笔记(三十九)—— time
  9. 免费电子书籍--网址
  10. ios睡眠分析 卧床 睡眠_苹果ios14睡眠记录功能 让用户清楚的了解自己的睡眠_娱乐频道_中华网...
  11. 武汉理工大学-数值分析-2019年期末复习提纲
  12. 使用WireShark了解浏览器访问网络的整个过程
  13. Chrome 批量删除指定站点历史记录
  14. 未能从dhcp服务器获得ip地址,当出现无法从DHCP服务器中获得地址的常见处理步骤...
  15. 计算机提示无法识别优盘,U盘插入电脑提示无法识别的解决方法
  16. Python:实现currency converter货币换算算法(附完整源码)
  17. linux批量追加内容,利用sed的追加功能批量在文件中追加内容
  18. 35岁以后不建议裸辞
  19. Activiti bpmn流程图设计工具 分享
  20. 打造高效能研发团队的 5 个关键步骤

热门文章

  1. 分享32套精美的免费 PSD 网页界面设计素材
  2. Opencv之边缘检测卷积算子(roberts与prewitt)
  3. Http请求状态详解
  4. SAP770系统FI模块配置(配置会计科目表)
  5. WVS(Web Vulnerability Scanner )
  6. 功能和性能的关系和区别对性能问题的考虑
  7. 常见的DNSBL(邮件黑名单),及DNSBL(邮件黑名单)的选择
  8. oracle_sql性能优化
  9. python教程十一 元组
  10. python元组 tup