TCHAR char CString string整理

TCHAR是一种字符串类型,是在以MBCS和UNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符。UNICODE是以两个字节方式存储,ASCII是一个字节的方式存储。
#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
所以用MBCS来build时,TCHAR是char,使用UNICODE时,TCHAR是wchar_t.

至于String,CString他们都是一种封装了字串处理的操作!
你可以打开他们的源代码找寻究竟!
CString属于VC(MFC)的类库
string是标准C++的类库
string.h是C的库函数。

TCHAR,char是可以同整型互换的类型。
String,CString代表了一块内存区域。

TCHAR szWindowText[256]=_T(“QQ2006”);
char*、TCHAR转换CString
CString str(
***)

  // string to char* 的三种方式
  //第一种
     string b = "hello!";
     char a = (char *)b.data(); //或者,const char *a = b.data(); 
   //第二种
    string str="gdfd";
    char *p= (char *)str.c_str();  //或者,const char *a = b.c_str(); 
   //第三种
	string b = "hello,world!";
	char p[40];
	b.copy(p, 5, 0); // 5代表复制5个字符,0代表复制的起始位置
	*(p + 5) = '\0';  //手动加上结束符
//char *转string
char *a = "hello,world!";
string b;
b = a; 
//当声明了string类型变量b后,用printf("%s",b);是会出错的,因为“%s”要求后面的对象的首地址。但是string不是这样的一个类型。所以肯定出错。
     //string转char[]
	//可以根据length()函数得到
	string b = "hello,world!";
	char p[40];
	int a = b.length();
	for (int i = 0; i < b.length(); i++)
	{
		p[i] = b[i];
	}
	p[a] = '\0';
	printf("%s\n", p);
//将CString赋值给THCAR类型,用Istrcpy
TCHAR* CPublic::CString2TCHAR(CString &str)   
{   
int iLen = str.GetLength();   
TCHAR* szRs = new TCHAR[iLen];   
lstrcpy(szRs, str.GetBuffer(iLen));   
str.ReleaseBuffer();   
return szRs;   
}   
/***********************************************************************    
* 描述:将TCHAR* 转换为 char*  
***********************************************************************  
*/   
char* CPublic::THCAR2char(TCHAR* tchStr)   
{   
int iLen = 2*wcslen(tchStr);//CString,TCHAR汉字算一个字符,因此不用普通计算长度   
char* chRtn = new char[iLen+1]   
wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为非负值   
return chRtn;   
}   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值