c语言程序设计cspn,常用的宽字符函数对照表

常用的宽字符函数

由于Windows

NT/2000/XP采用的是Unicode字符编码,字符都是双字节的。所以在MFC编程中,一般需要使用双字节的字符类型wchar_t和对应的字符串及其指针类型LPCWSTR和LPCTSTR,并在常数字符串前添加了L转换符,串长计算函数不能用strlen而改用wcslen,串格式打印函数也不能用sprintf,而是改用swprintf。

wchar_t类型,在标准C++中为内置的数据类型和关键字;在C99标准中则为typedef类型,其等价的数据类型与具体的实现有关,在Win32和VC中定义为:

typedef unsigned short wchar_t;

下面是若干常用的宽字符函数(包含在ISO C99 / ISO C++的标准库中):

#include

size_t wcslen(const wchar_t *s);

int wprintf(const wchar_t * restrict format, ...);

int wscanf(const wchar_t * restrict format, ...);

int swprintf(wchar_t * restrict s, size_t n, const wchar_t *

restrict format, ...);

int swscanf(const wchar_t * restrict s, const wchar_t * restrict

format, ...);

long int wcstol(const wchar_t * restrict nptr, wchar_t ** restrict

endptr, int base);

float wcstof(const wchar_t * restrict nptr, wchar_t ** restrict

endptr);

double wcstod(const wchar_t * restrict nptr, wchar_t ** restrict

endptr);

#include

errno_t _itow_s( int value, wchar_t *buffer, size_t

sizeInCharacters, int radix ); errno_t _ultow_s( unsigned long value, wchar_t *str, size_t

sizeOfstr, int radix );

多字节-multibyte

宽字符-widechar

非英语系的大部分语言,存在无法用有限的ascii字符表达的问题。

由此产生了使用多字节字符来表示的办法,比如GB编码的汉字。但多字节带来的一个显著不便就是多字节字符在处理的时候不太方便。比如文本编辑的时候,中英文混排,光标移动、汉字删除时会出现半个汉字的问题。

为了文本处理的方便,许多系统内部采用了将多字节字符和单字节字符都转换称宽字符的办法,将所有的字符都变成等宽,一切都方便了。

这就是说英文字符也可以采用宽字符的表达方式。也是我说上面的说发不够准确的原因。

但宽字符也不是完美的。最简单的问题就是使得采用unicode编码的英文文本体积会扩大一倍....:)

宽字符处理函数函数与普通函数对照表

只要看见“W”就是宽的意思,左边wchar_t,右边char

字符分类: 宽字符函数 普通C函数 描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测试字符是否是字母 iswcntrl() iscntrl() 测试字符是否是控制符 iswdigit() isdigit() 测试字符是否为数字 iswgraph() isgraph() 测试字符是否是可见字符 iswlower() islower() 测试字符是否是小写字符 iswprint() isprint() 测试字符是否是可打印字符 iswpunct() ispunct()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值