本文主要探讨了在编程中String、CString、TCHAR以及char之间的区别和联系,特别是它们在处理字符和字符串时的不同角色和转换方法。 String、CString、TCHAR和char是C++编程中常见的四种类型,它们各自用于不同的场景和目的。 1. Char: Char 是C++的基本数据类型,用来存储单个字符,如ASCII码。它通常用于简单的字符操作或构建字符数组。 2. TCHAR: TCHAR 是Microsoft Windows SDK中的一个类型定义,它的目的是为了兼容多字节字符集(MBCS)和宽字符集(Unicode)。当未定义UNICODE宏时,TCHAR相当于char,表示ASCII字符;如果定义了UNICODE,TCHAR则变为wchar_t,用于Unicode编码。通过这种方式,TCHAR使得代码可以在不同字符集下编译,无需大量修改。 3. CString: CString 是Visual C++ MFC(Microsoft Foundation Classes)库中的一个类,提供了一种更方便的方式来处理字符串。它提供了许多成员函数,如连接、查找、替换等,使得字符串操作更为便捷。与C风格的char*字符串不同,CString是对象,管理自己的内存,并且在需要时自动调整大小。 4. String: String 是标准C++库中的一个类,通常在`<string>`头文件中定义。它同样提供了字符串操作的方法,比如append、find、substr等,与CString类似。不同之处在于,String是STL(Standard Template Library)的一部分,适用于任何C++环境,不局限于Windows平台。 在这些类型之间进行转换通常是必要的。例如,从CString转换为TCHAR*,可以使用以下代码: ```cpp TCHAR* CPublic::CString2TCHAR(CString& str) { int iLen = str.GetLength(); TCHAR* szRs = new TCHAR[iLen + 1]; // 注意要加1,用于存储结束符'\0' lstrcpy(szRs, str.GetBuffer(iLen)); str.ReleaseBuffer(); return szRs; } ``` 另外,从TCHAR*转换为CString可以直接用构造函数: ```cpp CString str(TCHAR* pszText); ``` 或者使用AppendFormat: ```cpp CString str; str.AppendFormat(_T("%s"), pszText); ``` 转换char*与TCHAR*之间,需要考虑当前字符集的设置。如果在UNICODE环境中,可以使用`WideCharToMultiByte`或`MultiByteToWideChar`函数;在非UNICODE环境中,直接赋值即可。 String和CString提供了面向对象的字符串处理方式,而TCHAR和char则更多地涉及到底层字符编码和平台兼容性的问题。理解它们的区别并熟练运用,对于编写跨平台和高效代码至关重要。
最近老用到Cstring, TCHAR*, char*的转换.
找到一篇写得蛮详细的. 引用过来, 方便自己以后查阅.
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 赋值
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)
{
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦