使用ANSI/Unicode 通用数据类型
2013-01-17 14:11
127 查看
3、使用ANSI/Unicode 通用数据类型
微软提供了一些ANSI 和Unicode 兼容的通用数据类型,我们最常用的数据类型
有_T ,TCHAR,LPTSTR,LPCTSTR。
顺便说一下,LPCTSTR 和const TCHAR*是完全等同的。其中L 表示long 指针,
这是为了兼容Windows 3.1 等16 位操作系统遗留下来的,在Win32 中以及其它
的32 位操作系统中,long 指针和near 指针及far 修饰符都是为了兼容的作用,没
有实际意义。P(pointer)表示这是一个指针;C(const)表示是一个常量;T(_T 宏)表
示兼容ANSI 和Unicode,STR(string)表示这个变量是一个字符串。综上可以看出,
LPCTSTR 表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。比
如:
TCHAR* szText=_T(“ Hello!” );
TCHAR szText[]=_T(“ I Love You” );
LPCTSTR lpszText=_T(“大家好!”);
使用函数中的参数最好也要有变化, 比如:
MessageBox(_T(“你好”));
其实,在上面的语句中,即使您不加_T 宏,MessageBox 函数也会自动把“你好”
字符串进行强制转换。但我还是推荐您使用_T 宏,以表示您有Unicode 编码意识。
4、修改字符串运算问题
一些字符串操作函数需要获取字符串的字符数
(sizeof(szBuffer)/sizeof(TCHAR)),而另一些函数可能需要获取字符串的字节数
sizeof(szBuffer)。您应该注意该问题并仔细分析字符串操作函数,以确定能够得到
正确的结果。
ANSI 操作函数以str 开头,如strcpy(),strcat(),strlen();
Unicode 操作函数以wcs 开头,如wcscpy,wcscpy(),wcslen();
ANSI/Unicode 操作函数以_tcs 开头 _tcscpy(C 运行期库);
ANSI/Unicode 操作函数以lstr 开头 lstrcpy(Windows 函数);
考 虑ANSI 和Unicode 的兼容,我们需要使用以_tcs 开头或lstr 开头的通用字符串
操作函数。
微软提供了一些ANSI 和Unicode 兼容的通用数据类型,我们最常用的数据类型
有_T ,TCHAR,LPTSTR,LPCTSTR。
顺便说一下,LPCTSTR 和const TCHAR*是完全等同的。其中L 表示long 指针,
这是为了兼容Windows 3.1 等16 位操作系统遗留下来的,在Win32 中以及其它
的32 位操作系统中,long 指针和near 指针及far 修饰符都是为了兼容的作用,没
有实际意义。P(pointer)表示这是一个指针;C(const)表示是一个常量;T(_T 宏)表
示兼容ANSI 和Unicode,STR(string)表示这个变量是一个字符串。综上可以看出,
LPCTSTR 表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。比
如:
TCHAR* szText=_T(“ Hello!” );
TCHAR szText[]=_T(“ I Love You” );
LPCTSTR lpszText=_T(“大家好!”);
使用函数中的参数最好也要有变化, 比如:
MessageBox(_T(“你好”));
其实,在上面的语句中,即使您不加_T 宏,MessageBox 函数也会自动把“你好”
字符串进行强制转换。但我还是推荐您使用_T 宏,以表示您有Unicode 编码意识。
4、修改字符串运算问题
一些字符串操作函数需要获取字符串的字符数
(sizeof(szBuffer)/sizeof(TCHAR)),而另一些函数可能需要获取字符串的字节数
sizeof(szBuffer)。您应该注意该问题并仔细分析字符串操作函数,以确定能够得到
正确的结果。
ANSI 操作函数以str 开头,如strcpy(),strcat(),strlen();
Unicode 操作函数以wcs 开头,如wcscpy,wcscpy(),wcslen();
ANSI/Unicode 操作函数以_tcs 开头 _tcscpy(C 运行期库);
ANSI/Unicode 操作函数以lstr 开头 lstrcpy(Windows 函数);
考 虑ANSI 和Unicode 的兼容,我们需要使用以_tcs 开头或lstr 开头的通用字符串
操作函数。
相关文章推荐
- Unicode数据类型(与ANSI关系和相互转化)
- 使用回调函数实现一个通用的冒泡排序,可以排序不同的数据类型。
- Unicode数据类型(与ANSI关系和相互转化)
- Unicode数据类型(与ANSI关系和相互转化)
- ANSI字符和Unicode字符与字符串数据类型
- ANSI、Unicode、UTF-8、DBCS等字符集及相关数据类型、函数的区别
- ANSI、unicode、utf-8、DBCS等字符集及相关数据类型、函数的区别
- C++中使用剪贴板复制UNICODE/ANSI字符数据
- ANSI、unicode、utf-8、DBCS等字符集及相关数据类型、函数的区别
- Ansi、Unicode与通用类型
- 【C语言】使用回调函数实现一个通用的冒泡排序,可以排序不同的数据类型。
- Unicode数据类型(与ANSI关系和相互转化)
- ANSI、unicode、utf-8、DBCS等字符集及相关数据类型、函数的区别
- ANSI、Unicode、UTF-8、DBCS等字符集及相关数据类型、函数的区别
- ANSI、unicode、utf-8、DBCS等字符集及相关数据类型、函数的区别
- Ansi、Unicode与通用类型
- Unicode数据类型(与ANSI关系和相互转化)
- ANSI、Unicode、UTF-8、DBCS等字符集及相关数据类型、函数的区别
- C++中使用剪贴板复制UNICODE/ANSI字符数据
- Ansi、Unicode与通用类型