UNICODE和多字节常用函数转换
https://www.cnblogs.com/MakeView660/p/9699036.html
一、UNICODE和多字节常用算法
1、在MBSC环境下,TCHAR 代表char。
2、char是单字节字符
3、在Unicode环境下,TCHAR代表 wchar_t。
4、wchar_t是双字节字符,wchar_t wch = L"1";
5、CString 是基于 TCHAR 数据类型的.
6、
size_t strlen( const char *string );
size_t wcslen( const wchar_t *string );
int lstrlen(
LPCTSTR lpString // string to count
);
strlen()返回ANSI字符串长度;
wcslen()返回宽字符串长度;
lstrlen()依据字符串具体参数类型返回其长度
7、
sizeof strlen wcslen _tcslen 都是取得字符串长度。
sizeof :取得字符串的字节长度,包含 ‘/0’。
strlen:取得多字节字符串中字符长度,不包含 ‘/0’。
wcslen:取得宽字节字符串中字符长度,不包含 ‘/0’。
tcslen:取得宽字节/多字节字符串中字符长度,不包含 ‘/0’
(一)字符分类:
| 多字节函数 | 宽字符函数 | 描述 |
|---|---|---|
| isalnum() | iswalnum() | 测试字符是否为数字或字母 |
| isalpha() | iswalpha() | 测试字符是否是字母 |
| iscntrl() | iswcntrl() | 测试字符是否是控制符 |
| isdigit() | iswdigit() | 测试字符是否为数字 |
| isgraph() | iswgraph() | 测试字符是否是可见字符 |
| islower() | iswlower() | 测试字符是否是小写字符 |
| isprint() | iswprint() | 测试字符是否是可打印字符 |
| ispunct() | iswpunct() | 测试字符是否是标点符号 |
| isspace() | iswspace() | 测试字符是否是空白符号 |
| isupper() | iswupper() | 测试字符是否是大写字符 |
| isxdigit() | iswxdigit() | 测试字符是否是十六进制的数字 |
| 以下为后摘取 | ||
| isalpha() | 检查是否为字母字符 | |
| isupper() | 检查是否为大写字母字符 | |
| islower() | 检查是否为小写字母字符 | |
| isdigit() | 检查是否为数字 | |
| isxdigit() | 检查是否为十六进制数字表示的有效字符 | |
| isspace() | 检查是否为空格类型字符 | |
| iscntrl() | 检查是否为控制字符 | |
| ispunct() | 检查是否为标点符号 | |
| isalnum() | 检查是否为字母和数字 | |
| isprint() | 检查是否是可打印字符 | |
| isgraph() | 检查是否是图形字符,等效于 isalnum() | ispunct() |
(二)大小写转换:
| 多字节函数 | 宽字符函数 | 描述 |
|---|---|---|
| tolower() | towlower() | 把字符转换为小写 |
| toupper() | towupper() | 把字符转换为大写 |
(三)字符比较:
| 普通C函数 | 宽字符函数 | 描述 |
|---|---|---|
| strcoll() | wcscoll() | 比较字符串 |
(四)字符串到数值类型转换:
| 多字节函数 | 宽字符函数 | 描述 |
|---|---|---|
| strtod() | wcstod() | 把宽字符的初始部分转换为双精度浮点数 |
| strtol() | wcstol() | 把宽字符的初始部分转换为长整数 |
| strtoul() | wcstoul() | 把宽字符的初始部分转换为无符号长整数 |
| atoi() | _wtoi() | 把字符转换成整型 |
(五)数值到字符串间转换扩充:需要包含头文件——#include<stdlib.h>
| 多字节函数 | 宽字符函数 | 描述 |
|---|---|---|
| itoa() | _itow_s() | 整型转宽字符串 |
| ltoa() | _ltow_s() | 长整型转宽字符串 |
| ultoa() | _ultow_s() | 无符号长整数同上 |
| 后加追加~~~ | ||
| strtod(p, ppend) | 从字符串 p 中转换 double 类型数值,并将后续的字符串指针存储到 ppend 指向的 char* 类型存储。 | |
| strtol(p, ppend, base) | 从字符串 p 中转换 long 类型整型数值,base 显式设置转换的整型进制,设置为 0 以根据特定格式判断所用进制,0x, 0X 前缀以解释为十六进制格式整型,0 前缀以解释为八进制格式整型 | |
| atoi | 字符串转换到 int 整型 | |
| atof | 字符串转换到 double 符点数 | |
| atol | 字符串转换到 long 整型 |
PS:最好别用“_itow”
(六)输入和输出:
| 多字节函数 | 宽字符函数 | 描述 |
|---|---|---|
| fgetc() | fgetwc() | 从流中读入一个字符并转换为宽字符 |
| fgets() | fgetws() | 从流中读入一个字符串并转换为宽字符串 |
| fputc() | fputwc() | 把宽字符转换为多字节字符并且输出到标准输出 |
| fputs() | fputws() | 把宽字符串转换为多字节字符并且输出到标准输出串 |
| getc() | getwc() | 从标准输入中读取字符, 并且转换为宽字符 |
| getchar() | getwchar() | 从标准输入中读取字符, 并且转换为宽字符 |
| gets() | None | 使用fgetws() |
| putc() | putwc() | 把宽字符转换成多字节字符并且写到标准输出 |
| putchar() | putwchar() | 把宽字符转换成多字节字符并且写到标准输出 |
| puts() | None | 使用fputws() |
| ungetc() | ungetwc() | 把一个宽字符放回到输入流中 |
(七)字符串操作:
| 多字节函数 | 宽字符函数 | 描述 |
|---|---|---|
| strcat() | wcscat() | 把一个字符串接到另一个字符串的尾部 |
| strncat() | wcsncat() | 类似于wcscat(), 而且指定粘接字符串的粘接长度. |
| strchr() | wcschr() | 查找字符串中自字符第一个位置 |
| strrchr() | wcsrchr() | 从尾部开始查找子字符出现的第一个位置 |
| strpbrk() | wcspbrk() | 从一字符字符串中查找另一字符串中任何一个字符第一次出现的位置 |
| strstr() | wcswcs()/wcsstr() | 在一字符串中查找另一字符串第一次出现的位置 |
| strcspn() | wcscspn() | 返回不包含第二个字符串的的初始数目 |
| strspn() | wcsspn() | 返回包含第二个字符串的初始数目 |
| strcpy() | wcscpy() | 拷贝字符串 |
| strncpy() | wcsncpy() | 类似于wcscpy(), 同时指定拷贝的数目 |
| strcmp() | wcscmp() | 比较两个宽字符串 |
| strncmp() | wcsncmp() | 类似于wcscmp(), 还要指定比较字符字符串的数目 |
| strlen() | wcslen() | 获得宽字符串的数目 |
| strtok() | wcstok() | 根据标示符把宽字符串分解成一系列字符串 |
| None | wcswidth() | 获得宽字符串的宽度 |
| None | wcwidth() | 获得宽字符的宽度 |
另外还有对应于memory操作的 wmemcpy(), wmemchr(), wmemcmp(), wmemmove(), wmemset().

2876

被折叠的 条评论
为什么被折叠?



