字符串及处理之三: 使用TCHAR系列方案
来源:互联网 发布:淘宝尾款什么时候付 编辑:程序博客网 时间:2024/06/16 11:39
字符串及处理之三: 使用TCHAR系列方案
使用TCHAR系列方案编写程序
TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码。
TCHAR的引入,主要是在Tchar.h文件中,该文件包含这方面的重要的定义信息。
对于包含了对str函数或wcs函数进行显式调用的代码来说,无法非常容易地同时为ANSI和Unicode对这些代码进行编译。本章前面说过,可以创建同时为ANSI和Unicode进行编译的单个源代码文件。若要建立双重功能,必须包含TChar.h文件,而不是包含String.h文件。
TChar.h文件的唯一作用是帮助创建ANSI/Unicode通用源代码文件。它包含你应该用在源代码中的一组宏,而不应该直接调用str函数或者wcs函数。如果在编译源代码文件时定义了_UNICODE,这些宏就会引用wcs这组函数。如果没有定义_UNICODE,那么这些宏将引用str这组宏。
TCHAR的定义如下:
#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
所以用MBCS来build时,TCHAR是char,使用UNICODE时,TCHAR是wchar_t。
还有一个宏来处理定义Unicode字符串常量时所需的L前缀。
#ifdef UNICODE
#define _T(x) L##x
#define _TEXT(x) L##x
#define __T(x) L##x
#else
#define _T(x) x
#define _TEXT(x) x
#define __T(x) x
#endif
## 是一个预处理操作符,它可以把两个参数连在一起。如果你的代码中需要字符串常量,在它前面加上_T宏。如果你使用Unicode来build,它会在字符串常量前加上L前缀。
TCHAR szNewText[] = _T("we love Bob!");
_UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件。当编译源代码模块时,通常必须同时定义这两个宏。
像是用宏来隐藏SetWindowTextA/W的细节一样,还有很多可以供你使用的宏来实现str***()和_mbs***()等字符串函数。例如,你可以使用_tcsrchr宏来替换strrchr()、_mbsrchr()和wcsrchr()。_tcsrchr根据你预定义的宏是_MBCS还是UNICODE来扩展成正确的函数,就象SetWindowText所作的一样。
不仅str***()函数有TCHAR宏。其他的函数如, _stprintf(代替sprinft()和swprintf()),_tfopen(代替fopen()和_wfopen())。 MSDN中"Generic-Text Routine Mappings."标题下有完整的宏列表。
- 字符串及处理之三: 使用TCHAR系列方案
- 字符串及处理之三: 使用TCHAR系列方案
- 字符串及处理之 使用TCHAR方案 Windows自带的字符串函
- TCHAR、wchar_t、char及字符串处理函数区别(转)
- TCHAR、wchar_t、char及字符串处理函数区别
- TCHAR、wchar_t、char及字符串处理函数区别
- memcache系列--处理缓存的三种方案(三)
- VC中char,wchar_t,TCHAR及相应字符串处理函数辨析(附常用数据类型转换)
- 字符串处理三题之三
- 面试笔试系列之三 字符串相关
- c#调用C++时处理tchar *转字符串
- 字符串处理三题之二
- (三)Boost库之字符串处理
- C语言系列(三)字符串处理函数
- C语言系列(三)字符串处理函数
- 字符串面试题系列之三:左旋转字符串
- 字符串及处理之二: 基本字符串类型及函数
- 字符串及处理之六: 转换实例
- OpenCV轮廓特性(二)
- Iphone App 按比例手动布局(待完善)
- linux memcached启动
- 欢迎使用CSDN-markdown编辑器
- [BZOJ1026]SCOI2009 windy数|数位DP
- 字符串及处理之三: 使用TCHAR系列方案
- Apache开源项目分类列表
- sqlite数据库的使用
- UI UIView进度条,模拟手机充电功能
- STL中的二分查找
- Compare Version Numbers
- Linux下gcc工具
- Mac下IDEA开发环境Tomcat配置
- VC++中的char,wchar_t,TCHAR(转载)