大大大菜鸟

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1. C运行库的Unicode支持
char *strchr(   const char *str,   int c );  
wchar_t 
*wcschr(   const wchar_t *str,   wchar_t c );

int strcmp( const char *string1,const char *string2 );
int wcscmp(const wchar_t *string1,const wchar_t *string2
);

char *strcpy(char *strDestination,const char *strSource
);
wchar_t 
*wcscpy(wchar_t *strDestination,const wchar_t *strSource );

size_t strlen( 
const char *str);
size_t wcslen( 
const wchar_t *str );
标准的ANSI C字符串函数以及对应的Unicode函数。
2.TChar.h
<Tchar.h>主要是为了帮助实现ANSI/Unicode通用源代码文件的编写。主要由一系列的宏组成,如果定义了_UNICODE宏,当进行源码编译时,宏引用wcs系列的函数,否则应用str系列的函数。在vs 2008带的头文件中,TCHAR的定义如下:
typedef wchar_t WCHAR;
typedef WCHAR TCHAR, 
*PTCHAR;
VC++的编译器将所有的字符串默认为ANSI字串,而不是Unicode字符串。为了生成一个Unicode字符串,需要如下定义:
TCHAR *szError=L"Error";
一个字符串前大写的L提示编译器,该字符串应编译为一个Unicode字符串。也可以使用Tchar.h重定义的宏_TEXT:
#define __T(x)      L ## x
#define _TEXT(x)    __T(x)
3.Windows下程序符合ANSI和Unicode的一些编程规范
  • 将文本字符串看做字符数组,而不是字符型数据数组(??什么意思)或者字节数组;
  • 对于文本字符和串使用通用数据类型(如TCHAR和PTSTR);
  • 对字节、字节指针和数据缓冲区使用显式数据类型(如BYTE和PBYTE);
  • 对文本字符和字符串使用TEXT宏;
  • 执行全局替换(例如用PTSTR替换PSTR);
  • 修改字符串运算问题。
4.Windows字符串函数
windows提供了一些支持Unicode的函数,这些函数和C运行库作用略有不同。具体的有lstrcat、lstrcmp、lstrcmpi、lstrcpy、lstrlen等
5.CompareString函数
int CompareString(LCID Locale, DWORD dwCmpFlags, LPCTSTR lpString1, int cchCount1, LPCTSTR lpString2, int cchCount2 );
各个参数的含义:
Locale,用来识别具体的语言种类。本函数使用LCID,通过检查使用于特定语言的字符的意义来比较两个字符串。
dwCmpFlags是比较标志,可以用来控制是否检查大小写等条件。
lpString1,lpString2分别是两个要比较的字符串。
cchCount1,cchCount2分别是他们的长度。如果为-1,则函数假定字符串以0结尾。
6.其他对于宽字符进行操作的windows函数
这些函数有CharLower、CharUpper、CahrLowerBuff、CharUpperBuff、IsCharAlpha、IsCharAlphaNumberic、IsCharLower、IsCharUpper等,具体可以看msdn。
posted on 2009-07-19 21:05  月蚀之罪  阅读(673)  评论(0编辑  收藏  举报