String,CString,TCHAR,char之间区别和联系(转)
来源:互联网 发布:淘宝分类代码生成器 编辑:程序博客网 时间:2024/05/18 03:59
char是类型TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底是char还是w_char;
TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符
#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
所以用MBCS来build时,TCHAR是char,使用UNICODE时,TCHAR是wchar_t.
至于String,CString他们都是一种封装了字串处理的操作!
你可以打开他们的源代码找寻究竟!
CString属于VC的类库
string是标准C++的类库
string.h是C的库函数。
研究它们的源代好些!
TCHAR,char是可以同整型互换的类型。
String,CString代表了一块内存区域。
TCHAR 赋值
#include <tchar.h>
TCHAR szWindowText[256]=_T("QQ2006");
char*、TCHAR*转换CString
CString str(****)
下面详细写一下其它转换
view plaincopy to clipboardprint?
/* *********************************************************************
* 函数: TransCStringToTCHAR
* 描述:将CString 转换为 TCHAR*
* 日期:
***********************************************************************/
TCHAR* CPublic::CString2TCHAR(CString &str)
{
int iLen = str.GetLength();
TCHAR* szRs = new TCHAR[iLen];
lstrcpy(szRs, str.GetBuffer(iLen));
str.ReleaseBuffer();
return szRs;
}
/* *********************************************************************
* 函数: TransCStringToTCHAR
* 描述:将CString 转换为 TCHAR*
* 日期:
***********************************************************************/
TCHAR* CPublic::CString2TCHAR(CString &str)
{
int iLen = str.GetLength();
TCHAR* szRs = new TCHAR[iLen];
lstrcpy(szRs, str.GetBuffer(iLen));
str.ReleaseBuffer();
return szRs;
}
view plaincopy to clipboardprint?
/***********************************************************************
* 函数: THCAR2Char
* 描述:将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;
}
/***********************************************************************
* 函数: THCAR2Char
* 描述:将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;
}
view plaincopy to clipboardprint?
/*
***********************************************************************
* 函数: CString2char
* 描述:将CString转换为 char*
* 日期:
***********************************************************************
*/
char* CPublic::CString2char(CString &str)
{
int len = str.GetLength();
char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的长度中汉字算一个长度
memset(chRtn, 0, 2*len+1);
USES_CONVERSION;
strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer()));
return chRtn;
}
/*
***********************************************************************
* 函数: CString2char
* 描述:将CString转换为 char*
* 日期:
***********************************************************************
*/
char* CPublic::CString2char(CString &str)
{
int len = str.GetLength();
char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的长度中汉字算一个长度
memset(chRtn, 0, 2*len+1);
USES_CONVERSION;
strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer()));
return chRtn;
}
//参考
///////////////////////
//Pocket PC上的UNICODE和ANSI字符串
//By Vassili Philippov, September 26, 2001.
//杨方思歧 译
////////////////////////
view plaincopy to clipboardprint?
/*
***********************************************************************
* 函 数 名:GetAnsiString
* 描 述:将CString(unicode)转换为char*(ANSI)
* 参 数:CString &s 要转换的CString
* 返 回 值:返回转换结果
* 创建日期:
* 最后修改:
***********************************************************************
*/
char* GetAnsiString(const CString &s)
{
int nSize = 2*s.GetLength();
char *pAnsiString = new char[nSize+1];
wcstombs(pAnsiString, s, nSize+1);
return pAnsiString;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lsldd/archive/2009/08/06/4412531.aspx
- String,CString,TCHAR,char之间区别和联系(转)
- 转 String,CString,TCHAR*,char*之间区别和联系
- 转 String,CString,TCHAR*,char*之间区别和联系
- 转 String,CString,TCHAR*,char*之间区别和联系
- (转载)String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- 转载 String,CString,TCHAR*,char*之间区别和联系
- 转载 String,CString,TCHAR*,char*之间区别和联系
- 转载 String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR,char之间区别和联系
- String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR*,char*之间区别和联系
- 转载 String,CString,TCHAR*,char*之间区别和联系
- String,CString,TCHAR*,char*之间区别和联系
- perl 视频教程
- C#开发飞信机器人(转)
- Application的初始化过程中有4个函数顺序
- linux c/c++ GDB教程详解
- 网页经常打不开,出现“超时已过期”错误
- String,CString,TCHAR,char之间区别和联系(转)
- 杂谈PPT 文档撰写
- 基本NAT配置命令与原理
- 禁用EXCEL的Open/Save As功能
- 不允许的操作: streams type cannot be used in batching hibernate
- ListView vs ListBox performance in WPF
- ExtJs2.0学习系列(6)--Ext.FormPanel之第三式(ComboBox篇)
- zen cart -- 开发zen cart模板
- 准备用asterisk、elastix、freePBX、astercc和asterCRM建呼叫中心