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

合集下载

ANSI与UNICODE字符函数对照表

ANSI与UNICODE字符函数对照表

宽字符处理函数函数与普通函数对照表字符分类:宽字符函数普通C函数描述iswalnum()isalnum()测试字符是否为数字或字母iswalpha()isalpha()测试字符是否是字母iswcntrl()iscntrl()测试字符是否是控制符iswdigit()isdigit()测试字符是否为数字iswgraph()isgraph()测试字符是否是可见字符iswlower()islower()测试字符是否是小写字符iswprint()isprint()测试字符是否是可打印字符iswpunct()ispunct()测试字符是否是标点符号iswspace()isspace()测试字符是否是空白符号iswupper()isupper()测试字符是否是大写字符iswxdigit()isxdigit()测试字符是否是十六进制的数字大小写转换:宽字符函数普通C函数描述towlower()tolower()把字符转换为小写towupper()toupper()把字符转换为大写字符比较:宽字符函数普通C函数描述wcscoll()strcoll()比较字符串日期和时间转换:宽字符函数描述strftime()根据指定的字符串格式和locale设置格式化日期和时间wcsftime()根据指定的字符串格式和locale设置格式化日期和时间,并返回宽字符串strptime()根据指定格式把字符串转换为时间值,是strftime的反过程打印和扫描字符串:宽字符函数描述fprintf()/fwprintf()使用vararg参量的格式化输出fscanf()/fwscanf()格式化读入printf()使用vararg参量的格式化输出到标准输出scanf()从标准输入的格式化读入sprintf()/swprintf()根据vararg参量表格式化成字符串sscanf()以字符串作格式化读入vfprintf()/vfwprintf()使用stdarg参量表格式化输出到文件vprintf()使用stdarg参量表格式化输出到标准输出vsprintf()/vswprintf()格式化stdarg参量表并写到字符串数字转换:宽字符函数普通C函数描述wcstod()strtod()把宽字符的初始部分转换为双精度浮点数wcstol()strtol()把宽字符的初始部分转换为长整数wcstoul()strtoul()把宽字符的初始部分转换为无符号长整数多字节字符和宽字符转换及操作:宽字符函数描述mblen()根据locale的设置确定字符的字节数mbstowcs()把多字节字符串转换为宽字符串mbtowc()/btowc()把多字节字符转换为宽字符wcstombs()把宽字符串转换为多字节字符串wctomb()/wctob()把宽字符转换为多字节字符输入和输出:宽字符函数普通C函数描述fgetwc()fgetc()从流中读入一个字符并转换为宽字符fgetws()fgets()从流中读入一个字符串并转换为宽字符串fputwc()fputc()把宽字符转换为多字节字符并且输出到标准输出fputws()fputs()把宽字符串转换为多字节字符并且输出到标准输出串getwc()getc()从标准输入中读取字符,并且转换为宽字符getwchar()getchar()从标准输入中读取字符,并且转换为宽字符None gets()使用fgetws()putwc()putc()把宽字符转换成多字节字符并且写到标准输出putwchar()putchar()把宽字符转换成多字节字符并且写到标准输出None puts()使用fputws()ungetwc()ungetc()把一个宽字符放回到输入流中字符串操作:宽字符函数普通C函数描述wcscat()strcat()把一个字符串接到另一个字符串的尾部wcsncat()strncat()类似于wcscat(),而且指定粘接字符串的粘接长度.wcschr()strchr()查找子字符串的第一个位置wcsrchr()strrchr()从尾部开始查找子字符串出现的第一个位置wcspbrk()strpbrk()从一字符字符串中查找另一字符串中任何一个字符第一次出现的位置wcswcs()/wcsstr()strchr()在一字符串中查找另一字符串第一次出现的位置wcscspn()strcspn()返回不包含第二个字符串的的初始数目wcsspn()strspn()返回包含第二个字符串的初始数目wcscpy()strcpy()拷贝字符串wcsncpy()strncpy()类似于wcscpy(),同时指定拷贝的数目wcscmp()strcmp()比较两个宽字符串wcsncmp()strncmp()类似于wcscmp(),还要指定比较字符字符串的数目wcslen()strlen()获得宽字符串的数目wcstok()strtok()根据标示符把宽字符串分解成一系列字符串wcswidth()None 获得宽字符串的宽度wcwidth()None 获得宽字符的宽度另外还有对应于memory操作的wmemcpy(),wmemchr(),wmemcmp(),wmemmove (),wmemset().操作ANSI串函数Unicode 串函数Length strlen wcslen Concatenate strcat, strncat wcscat, wcsncat, RtlAppendUnicodeStringT oString, RtlAppendUnicodeToStringCopy strcpy, strncpy, RtlCopyString wcscpy, wcsncpy, RtlCopyUnicodeStringReverse _strrev _wcsrev Compare strcmp, strncmp, _stricmp, _strnicmp, RtlCompareString, RtlEqualString wcscmp, wcsncmp, _wcsicmp, _wcsnicmp, RtlCompareUnicodeString, RtlEqualUnicodeString, RtlPrefixUnicodeStringInitialize _strset, _strnset, RtlInitAnsiString, RtlInitString _wcsnset, RtlInitUnicodeStringSearch strchr, strrchr, strspn, strstr wcschr, wcsrchr, wcsspn, wcsstrUpper/lowercase _strlwr, _strupr, RtlUpperString _wcslwr, _wcsupr, RtlUpcaseUnicodeStringCharacter isdigit, islower, isprint, isspace, isupper, isxdigit, tolower, toupper, RtlUpperChar towlower, towupper, RtlUpcaseUnicodeCharFormat sprintf, vsprintf, _snprintf, _vsnprintf,_splitpath swprintf, _snwprintf,_wsplitpathString conversion atoi, atol, _itoa _itow, RtlIntegerToUnicodeString, RtlUnicodeStringToIntegerType conversion RtlAnsiStringToUnicodeSize, RtlAnsiStringToUnicodeString RtlUnicodeStringToAnsiStringMemory release RtlFreeAnsiString RtlFreeUnicodeString用C函数来转换Unicode和ANSI文字char sChar[MAX_PATH];const WCHAR wChar[] = L"我的朋友";// 把wChar这个Unicode字符串转换成ANSI字符串,保存到sChar,并且返回ANSI的字符串大小,如果失败,则返回-1wcstombs(sChar, wChar, MAX_PATH);这样是运行不过不去的,总是返回-1。

wchar_t的类型定义

wchar_t的类型定义

wchar_t的类型定义【wchar_t的类型定义】在C++语言中,wchar_t是一种用于表示宽字符的数据类型。

它是宽字符类型的一种实现方式,用于在多语言编程中支持特定字符集的编码方式,例如Unicode编码。

wchar_t类型的定义可以根据不同的编译器和平台而有所不同,下面将一步一步回答有关wchar_t类型定义的问题。

一、wchar_t的基本介绍wchar_t是一种用于表示宽字符的数据类型,它至少能够容纳一个本地字符集的所有字符。

宽字符类型在处理多语言编程中的字符串以及特殊字符时非常有用,因为它可以支持更广泛的字符范围。

二、wchar_t的大小wchar_t类型占据的字节大小在不同平台和编译器中可以有所不同。

这是因为不同平台对wchar_t类型的实现方式可能会有所差异。

在大多数平台中,wchar_t 类型占据2个或4个字节的空间。

三、wchar_t类型的字面常量wchar_t类型的字面常量可以使用L前缀加上单引号或双引号来表示,例如L'X'或L"Hello, World!"。

这样做是为了告诉编译器这是一个宽字符的常量。

四、wchar_t类型的标准库函数wchar_t类型在C++标准库中定义了一系列用于处理宽字符字符串的函数。

这些函数以"w"开头,例如wprintf()、wscanf()、wcslen()等。

这些函数是对应于普通的char类型字符串函数的宽字符版本。

五、wchar_t类型的宽字符编码方式wchar_t类型在不同编译器和平台中可能使用不同的宽字符编码方式。

常见的宽字符编码方式有UTF16和UTF32。

UTF16是以16位无符号整数来表示每个字符,而UTF32是以32位无符号整数来表示每个字符。

这些编码方式使得wchar_t 类型可以表示更广泛的字符范围。

六、wchar_t类型的使用注意事项在使用wchar_t类型时,需要注意的是,它只能在支持宽字符的编译器和平台上使用。

TCHAR、wchar_t、char及字符串处理函数区别

TCHAR、wchar_t、char及字符串处理函数区别
TCHAR、wchar_t、char及字符串处理函数区别
一.ANSI和UNICODE
2.ANSI字符和Unicode字符
ANSI字符类型为CHAR,指向字符串的指针PSTR(LPSTR),指向一个常数字符串的指针PCSTR(LPCSTR);
对应的Windows定义的Unicode字符类型为WCHAR(typedef WCHAR wchar_t) ,指向Unicode字符串的指针PWSTR ,指向一个常数Unicode字符串的指针PCWSTR 。
2.通用字符串指针LPTSTR
LPTSTR
ifdef UNICODE it is LPWSTR(*wchar_t) for Unicode platforms;
else it is LPSTR (*char) for ANSI and DBCS platforms.
3.通用通用常数字符串指针LPCTSTR
LPCTSTR
ifdef UNICODE it is LPCWSTR(*const wchar_t) for Unicode platforms;
else it is LPCSTR (*const char)for ANSI and DBCS platforms.
将ANSI转换到Unicode
(1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)通过MultiByteToWideChar函数实现转换,例如:
char *szProgID = "MAPI.Folder";
WCHAR szWideProgID[128];
USES_CONVERSION;

MultiByteToWideChar和WideCharToMultiByte用法详解

MultiByteToWideChar和WideCharToMultiByte用法详解

MultiByteToWideChar和WideCharToMultiByte用法详解注意:这两个函数是由Windows提供的转换函数,不具有通用性C语言提供的转换函数为mbstowcs()/wcstombs()一、函数简单介绍涉及到的头文件:函数所在头文件:windows.h#include <windows.h>wchar_t类型所需头文件:wchar.h#include <wchar.h>( 1 ) MultiByteToWideChar()函数功能:该函数映射一个字符串到一个宽字符(unicode)的字符串。

由该函数映射的字符串没必要是多字节字符组。

函数原型:int MultiByteToWideChar(UINT CodePage,DWORD dwFlags,LPCSTR lpMultiByteStr,int cchMultiByte,LPWSTR lpWideCharStr,int cchWideChar);参数:1> CodePage:指定执行转换的多字节字符所使用的字符集这个参数可以为系统已安装或有效的任何字符集所给定的值。

你也可以指定其为下面的任意一值:2> dwFlags:一组位标记,用以指出是否未转换成预作或宽字符(若组合形式存在),是否使用象形文字替代控制字符,以及如何处理无效字符。

你可以指定下面是标记常量的组合,含义如下:MB_PRECOMPOSED:通常使用预作字符——就是说,由一个基本字符和一个非空字符组成的字符只有一个单一的字符值。

这是缺省的转换选择。

不能与MB_COMPOSITE值一起使用。

MB_COMPOSITE:通常使用组合字符——就是说,由一个基本字符和一个非空字符组成的字符分别有不同的字符值。

不能与MB_PRECOMPOSED值一起使用。

MB_ERR_INVALID_CHARS:如果函数遇到无效的输入字符,它将运行失败,且GetLastErro返回ERROR_NO_UNICODE_TRANSLATION 值。

VC++中的char wchar_T和TCHAR

VC++中的char wchar_T和TCHAR

大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX 函数,这个问题曾经搞的很混乱。

为了统一,有必要把来龙去脉搞清楚。

为了搞清这些函数,就必须理请几种字符类型的写法。

char就不用说了,先说一些wchar_t。

wchar_t是Unicode字符的数据类型,它实际定义在<string.h>里:typedef unsigned short wchar_t;不能使用类似strcpy这样的ANSI C字符串函数来处理wchar_t字符串,必须使用wcs前缀的函数,例如wcscpy。

为了让编译器识别Unicode字符串,必须以在前面加一个“L”,例如:wchar_t *szTest=L"This is a Unicode string.";下面在看看TCHAR。

如果你希望同时为ANSI和Unicode编译的源代码,那就要include TChar.h。

TCHAR是定义在其中的一个宏,它视你是否定义了_UNICODE宏而定义成char 或者wchar_t。

如果你使用了TCHAR,那么就不应该使用ANSI的strXXX函数或者Unicode 的wcsXXX函数了,而必须使用TChar.h中定义的_tcsXXX函数。

另外,为了解决刚才提到带“L”的问题,TChar.h中定义了一个宏:“_TEXT”。

以strcpy函数为例子,总结一下:.如果你想使用ANSI字符串,那么请使用这一套写法:char szString[100];strcpy(szString,"test");.如果你想使用Unicode字符串,那么请使用这一套:wchar_t szString[100];wcscpyszString,L"test");.如果你想通过定义_UNICODE宏,而编译ANSI或者Unicode字符串代码:TCHAR szString[100];_tcscpy(szString,_TEXT("test"));2.字符串及处理之三: 使用TCHAR系列方案使用TCHAR系列方案编写程序TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码。

c语言中的w数据类型

c语言中的w数据类型

c语言中的w数据类型
在C语言中,w数据类型通常与宽字符和宽字符字符串相关。

这主要出现在处理多
字节字符和国际化的应用中。

1.宽字符(wchar_t):
o wchar_t是一个用于存储宽字符的类型。

一个宽字符可以表示的字符集远大于一个单字节字符集,因此它可以用来表示例如Unicode这
样的字符集。

o wchar_t类型的大小取决于具体的实现,但通常至少为16位。

2.宽字符字符串(L前缀):
o在C语言中,字符串通常由字符数组表示,每个字符占用一个字节。

但当你有一个宽字符集时,一个字符可能不只占用一个字节。

为了标识这样的字符串,你可以在字符串字面值前加上L前缀,例
如L"Hello"。

o使用L前缀的字符串字面值表示宽字符字符串。

3.宽字符输入/输出(fwide() 函数):
o fwide()函数用于设置文件流的方向,以进行宽字符的输入或输出。

这允许你控制如何处理多字节字符序列。

o例如,你可以使用fwide(fp, 1)来打开一个文件流,使其以宽字符模式进行读写。

4.多字节字符和宽字符之间的转换:
o C库提供了函数来处理多字节字符和宽字符之间的转换,
如mbrtowc()和wcrtomb()。

这些函数允许你转换单个字符或字符串。

为了处理国际化和多语言环境中的文本,理解C语言中的宽字符和多字节字符的
概念是非常重要的。

这涉及到如何正确地存储、传输和显示各种语言的文本,包括那些不能被单字节字符集完全表示的文本。

c语言 url转换宽字符处理

c语言 url转换宽字符处理

C语言中URL转换宽字符处理C语言作为一种通用的编程语言,具有较高的灵活性和通用性,可以处理各种复杂的编程任务。

在网络编程中,URL的处理是一个常见的需求,而在C语言中处理URL时,可能需要考虑到宽字符的处理。

本文将从C语言中URL的转换和宽字符处理两个方面展开讨论。

一、URL的转换1. URL编码URL编码是指将URL中的特殊字符转换成特定的编码形式,以便于在网络传输过程中不产生歧义。

在C语言中,可以使用urlencode函数来进行URL编码,该函数的定义如下:```cchar *urlencode(const char *src);```该函数接受一个源字符串作为参数,返回一个经过URL编码后的字符串。

对于字符串"hello world",经过urlencode函数编码后的结果为"hello20world"。

2. URL解码URL解码是指将URL中的编码形式的字符还原成原始的特殊字符。

在C语言中,可以使用urldecode函数来进行URL解码,该函数的定义如下:```cchar *urldecode(const char *src);```该函数接受一个经过URL编码后的字符串作为参数,返回一个解码后的字符串。

对于字符串"hello20world",经过urldecode函数解码后的结果为"hello world"。

二、宽字符处理1. 宽字符与多字节字符在C语言中,字符可以分为宽字符和多字节字符两种类型。

宽字符是指每个字符占用多个字节的字符,而多字节字符是指每个字符占用一个字节的字符。

在处理URL时,需要考虑到URL中可能包含非ASCII 字符,而非ASCII字符通常是宽字符。

2. 宽字符转换在C语言中,可以使用mbstowcs函数将多字节字符转换成宽字符,该函数的定义如下:```csize_t mbstowcs(wchar_t *dest, const char *src, size_t n);```该函数接受一个多字节字符作为参数,返回一个宽字符序列。

宽字符——精选推荐

宽字符——精选推荐

宽字符1.关于字符编码1)ASCII1】ASCII 码使⽤指定的 7 位或 8 位⼆进制数组合来表⽰ 128 或 256 种可能的字符。

2】标准 ASCII 码使⽤ 7 位⼆进制数来表⽰所有的⼤写和⼩写字母,数字 0 到 9、标点符号,以及在美式英语中使⽤的特殊控制字符。

3】扩展 ASCII 码允许将每个字符的第 8 位⽤于确定附加的 128 个特殊符号字符、外来语字母和图形符号。

标志ascii表的部分:拓展ascii表:2)gb2312标准的ascii占⼀个字节8位,且最⾼位为0;拓展ascii表8位,最⾼位为1;如果要表是中⽂字符,ascii不够⽤,因为⽆法表⽰数量庞⼤的汉字;为了解决这⼀问题,中国的专家使⽤gb2312;gb2312⽤两个字节表⽰⼀个汉字;为了不⾄于⽆法区分标准ascii表,两个字符的最⾼位都是1;gb2312编码中去掉了拓展ascii表,也就是使⽤gb2312编码时不要拓展ascii表了;gb2312编码规则:计算机发明之处及后⾯很长⼀段时间,只⽤应⽤于美国及西⽅⼀些发达国家,ASCII能够很好满⾜⽤户的需求。

但是当天朝也有了计算机之后,为了显⽰中⽂,必须设计⼀套编码规则⽤于将汉字转换为计算机可以接受的数字系统的数。

天朝专家把那些127号之后的奇异符号们(即EASCII)取消掉,规定:⼀个⼩于127的字符的意义与原来相同,但两个⼤于127的字符连在⼀起时,就表⽰⼀个汉字,前⾯的⼀个字节(他称之为⾼字节)从0xA1⽤到 0xF7,后⾯⼀个字节(低字节)从0xA1到0xFE,这样我们就可以组合出⼤约7000多个简体汉字了。

在这些编码⾥,还把数学符号、罗马希腊的字母、⽇⽂的假名们都编进去了,连在ASCII⾥本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全⾓"字符,⽽原来在127号以下的那些就叫"半⾓"字符了。

部分gb2312表:如图:保存在内存中的字符2.宽字符使⽤ascii可能出现的问题1】乱码对于中⽂来说,编码⽅式为gb2312,将2个拓展ascii字符合成1个汉字;但其它编码⽅式也使⽤同样的⽅式,例如⽇⽂、韩⽂之类的;也就是说,同样的两个字节,在使⽤不同的编码⽅式时表⽰的是不同的字符;因此可能出现乱码;乱码的本质就是多个符号对应同⼀个⼆进制数据;2】字符个数的计算问题例如:hello世界该字符串有7个字符;实际计算出来的是9个字符;因为⼀个汉字占了2个字符,5+2x2=9;为了解决这⼀问题,联合国的某⼀组织推出了宽字符Unicode;Unicode每⼀个字符都⽤2个字节来表⽰;Unicode只有⼀个字符集,将所有国家的常⽤符号都记录在这个字符集中;ps:字符集本质上就是⼀张表,⽤来记录某个符号对应某个⼆进制数;Unicode记录的只是所有国家常⽤符号,⽆法解决所有问题;因为2个字节最多记录65536个符号,不可能将所有符号完全包括;因为Unicode只有⼀张表,使⽤Unicode不会出现⼀个⼆进制数对应多个符号的问题,从⽽解决了乱码;例如常⽤的utf-8就是在Unicode的基础上扩展⽽来的字符集;3.c语⾔中的宽字符1)宽字符的使⽤"中"字的编码:ASCII:d6 d0 //拓展的ascii也就是gb2312UNICODE:4e 2d观察内存中的值,为什么会出现这种情况?char x = '中'; //内存中只会保存d0,因为char只能存⼀个字节,⽽中⽂字符占2个字节,只保存⼀半;wchar_t x1 = '中'; //内存中为 d6 d0,也就是对应gb2312表的d0d6,windows中是反着存的;wchar_t宽度是2个字节,⾜够存中⽂字符;如何告诉编译器我们要使⽤的是Unicode的那张表呢?wchar_t x1 = L'中'; //内存中是4e2d,字符前⾯加L告诉编译器查Unicode表;2)宽字符串的使⽤char x[] = "中国";//d6 d0 b9 fa 00 使⽤拓展ASCII编码表以00(\0)结尾wchar_t x1[] = L"中国";//2d 4e fd 56 00 00 使⽤UNICODE编码表以00 00(\0\0)结尾3)在控制台中输出宽字符char x[] = "中国";wchar_t x1[] = L"中国";printf("%s\n",x); //使⽤控制台默认的编码wprintf(L"%s\n",x1); //默认使⽤英⽂,可能⽆法正常输出中⽂告诉编译器,使⽤控制台默认的编码格式1】包含头⽂件 #include <locale.h>2】 setlocale(LC_ALL,""); //使⽤控制台默认的编码,第⼆个参数为""将区操作系统的语⾔区,也就是中⽂语⾔区4)取宽字符串长度需要引⼊头⽂件:#include"string.h"char x[] = "中A国";wchar_t x1[] = L"中A国";strlen(x); //取得多字节字符串中字符长度,不包含 00 ;结果是5,中⽂占2字节,英⽂占1字节,不算结尾符00wcslen(x1); //取得多字节字符串中字符长度,不包含 00 00 ;结果是3,unicode中英⽂都占2字节,将2字节当做1个字符,不包含结尾的0000,也就是3个字符返回3 5)字符串复制strcpy(a,b)->将字符串b复制到字符串a处,会将b的结束标记00也复制过去->本质上就是封装后的memcpy(),只不过是会⾃动判断遇到字符串结束符00后结束复制,⽽不需要指定复制的字节数;char x[] = "china";char x1[] = "123";strcpy(x,x1); //结果是x处的字符串变成了"123"wchar_t y[] = L"中国";wchar_t y1[] = L"好";wcscpy(y,y1);ascii和宽字符关键字和常⽤字符串操作函数的对应:4.Win32的API中的宽字符1)什么是Win32 API?有哪些?在哪⾥?主要是存放在 C:\WINDOWS\system32 下⾯所有的dll2)⾮常重要的⼏个DLLKernel32.dll:最核⼼的功能模块,⽐如管理内存、进程和线程相关的函数等.User32.dll:是Windows⽤户界⾯相关应⽤程序接⼝,如创建窗⼝和发送消息等.GDI32.dll:全称是Graphical Device Interface(图形设备接⼝),包含⽤于画图和显⽰⽂本的函数⽐如要显⽰⼀个程序窗⼝,就调⽤了其中的函数来画这个窗⼝这些dll并不提供内核函数,只是⼀个壳,通过这⾥dll提供的函数来调⽤真正的内核函数;3)Win32 API中的宽字符和多字节字符Windows是使⽤C语⾔开发的,Win32 API同时⽀持宽字符与多字节字符.为了加强可读性,Windows的API中定义了很多类型的宏,在vc6中可以按F12跟进去看到底是什么类型;(1) 字符类型 (2) 字符串指针char CHAR PSTR(LPSTR) 指向多字节字符串wchar_t WCHAR PWSTR(LPWSTR) 指向宽字符串宏 TCHAR 宏 PTSTR(LPTSTR)字符数组赋值CHAR cha[] = "中国";WCHAR chw[] = L"中国";TCHAR cht[] = TEXT("中国");为字符串指针赋值:PSTR pszChar = "china"; //多字节字符PWSTR pszWChar = L"china"; //宽字符PTSTR pszTChar = TEXT("china"); //如果项⽬是ASCII的相当于"china" UNICODE 相当于L"china"windows底层处理字符串都是⽤宽字符;但为了兼容也会提供多字节字符的函数;实际上,多字节字符的函数是将多字节字符转为宽字节字符来实现的;TCHAR是根据环境类型来决定的,如果环境是宽字节那么TCHAR就是查UNICODE表;如果环境是多字节字符,那么TCHAR就是查ASCII 表;这样有个问题,⽆法确定该怎么给TCHAR类型的变量赋值,也就是到底要不要在字符串前⾯加L;为了解决这个问题,通常会⽤TEXT("字符串")函数来给TCHAR类型赋值;使⽤windows的api时最好⽤宏类型TCHAR;4)各种版本的MessageBoxMessageBoxA(0,"内容多字节","标题",MB_OK);MessageBoxW(0,L"内容宽字节",L"标题",MB_OK);MessageBox(0,TEXT("根据项⽬字符集决定"),TEXT("标题"),MB_OK);Windows提供的API 凡是需要传递字符串参数的函数,都会提供两个版本和⼀个宏.WIN32 API只提供了MessageBoxA和MessageBoxW;MessageBox实际上是⼀个宏,会根据当前项⽬的编码格式来决定到底是MessageBoxA还是MessageBoxW;4.Win32的⼊⼝函数win32控制台程序的⼊⼝函数是main;win32程序的⼊⼝函数时WinMain;控制台程序和win32程序本质上没什么区别,只是引⼊的头⽂件和⼊⼝函数不⼀样⽽已;WinMain:int CALLBACK WinMain(_In_ HINSTANCE hInstance,_In_ HINSTANCE hPrevInstance,_In_ LPSTR lpCmdLine,_In_ int nCmdShow){return0;}windows API所有函数的调⽤约定都是__stdcall;参数从右⾄左⼊栈,函数⾃⾝⽤ret x平衡堆栈;5.win32程序调试1)win32控制台输出win32程序中不能使⽤printf;为了调试需要定义⼀个函数能在控制台输出;.hvoid __cdecl OutputDebugStringF(const char *format, ...);#ifdef _DEBUG#define DbgPrintf OutputDebugStringF //如果是debug版的程序定义该函数,如果发布成release版则不定义;也就是为了正式版发布是不⽤删除调试信息;#else#define DbgPrintf#endif.cppvoid __cdecl OutputDebugStringF(const char *format, ...){va_list vlArgs;char *strBuffer = (char*)GlobalAlloc(GPTR, 4096);va_start(vlArgs, format);_vsnprintf(strBuffer, 4096 - 1, format, vlArgs);va_end(vlArgs);strcat(strBuffer, "\n");OutputDebugStringA(strBuffer);GlobalFree(strBuffer);return;}2)GetLastError的使⽤该函数会返回⼀个DWORD类型的错误代码;通过错误代码可以知道到底哪⾥出错;将该函数放到可能出问题的函数下⾯即可;例如:TCHAR szContent[] = TEXT("内容");TCHAR szTitle[] = TEXT("标题");MessageBox((HWND)0,szContent,szTitle,MB_OK); DWORD errorCode = GetLastError();。

关于wchar的两个常用函数wcstombs和WideCharToMultiByte

关于wchar的两个常用函数wcstombs和WideCharToMultiByte

关于wchar的两个常用函数wcstombs和WideCharToMultiByte宽字符已经困扰我很久了,以前我都是设置项目的属性把它改为多字节,不用UNICODE。

不过现在又遇到宽字节的问题,没有办法,只有硬着头皮学学:看了之后我才发现原来有wcsXXX的函数专门处理宽字节的,就是strXXX一样好使。

呵呵,我不再惧怕了,就试着自己写了一下,还是学了蛮多东西的:1.有wcsXXX的函数和strXXX的函数对应处理宽字节,wcslen就是求长度的,wcscmp就是比较两个字符串的。

2.输出也有相关的操作,wprintf(L”%s%s”);这样的操作,对文件也可以用fwprintf函数来输出。

不过我发现貌似cout << wchar;不成功。

也发现了一个问题,就是我输出”相等”这样一个字符串的时候,发现居然输出不正确,无论是控制台和文件都有错误。

可见,这个还是有点小问题的。

输出其他的例如”12345”等都是正常的。

哎,这个函数并不可靠啊。

3.宽字节和普通串的转换问题,学了两个函数,一个是:wcstombs(char* strDes, const wchar*, size_t nMax);这个函数的作用是把wchar转换为char。

char* strDes 为保存转换后的普通字符串,wchar* 要被转换的宽字符串。

转换的最大长度。

这里的长度是转换的个数,而不是字节长度。

mbstowcs() 就是一个相反的过程了,参数就不说了。

另一套转换的函数是:int WideCharToMultiByte(UINT CodePage,DWORD dwFlags,LPCWSTR lpWideCharStr,int cchWideChar,LPSTR lpMultiByteStr,int cbMultiByte,LPCSTR lpDefaultChar,LPBOOL lpUsedDefaultChar);他的参数很多,上面的连接有介绍,这里就不怎么细说了。

swprintf函数用法

swprintf函数用法

swprintf函数用法一、概述swprintf函数是C/C++中的一个宽字符函数,用于将格式化的数据写入一个数组。

swprintf函数与printf函数类似,区别在于前者将结果输出到一个宽字符数组中,而后者输出到标准输出流中。

swprintf函数能够格式化一系列不同类型的数据,并提供了丰富的格式化选项。

二、函数原型swprintf函数的函数原型如下:int swprintf(wchar_t* str, size_t size, const wchar_t* format, ...);其中: - str是指向宽字符数组的指针,用于存放格式化后的字符串; - size是目标数组的大小,确保不会发生溢出; - format是一个格式化字符串,指定了要输出的数据和格式化选项; - ...是可变参数列表,根据format中的格式化选项传入相应的参数。

三、使用示例下面是一个使用swprintf函数的示例:#include <stdio.h>#include <wchar.h>int main() {wchar_t buffer[100];int count = swprintf(buffer, 100, L"Hello, %s! Today is %d-%d-%d.", L"John ", 2022, 10, 1);wprintf(L"%ls\n", buffer);wprintf(L"Number of characters written: %d\n", count);return 0;}运行上述代码,将会输出:Hello, John! Today is 2022-10-1.Number of characters written: 29上述示例中,首先定义了一个宽字符数组buffer,大小为100。

swscanf函数

swscanf函数

swscanf函数详解1. 函数定义swscanf函数是C语言中的一个输入格式化函数,用于从宽字符字符串中按照指定格式读取数据,并将读取到的数据存储到对应的变量中。

int swscanf(const wchar_t *ws, const wchar_t *format, ...);2. 函数用途swscanf函数主要用于从宽字符字符串中提取数据,并按照指定的格式进行解析和存储。

它可以根据指定的格式字符串,将字符串中的数据转换成对应的数据类型,并存储到相应的变量中。

swscanf函数的用途非常广泛,可以用于解析用户输入的命令行参数、读取文件中的数据、处理网络数据等场景。

它可以将复杂的字符串格式转换为具体的数据类型,为后续的数据处理提供便利。

3. 函数工作方式swscanf函数的工作方式类似于scanf函数,但是swscanf函数处理的是宽字符字符串,而scanf函数处理的是普通字符字符串。

swscanf函数的工作过程可以分为以下几个步骤:•1.根据格式字符串format,确定需要读取的数据类型和格式。

格式字符串中可以包含普通字符和转换说明符,用于指定需要读取的数据类型和格式。

•2.从宽字符字符串ws中按照格式字符串format,逐个字符进行匹配。

匹配的过程会跳过格式字符串中的普通字符,只处理转换说明符。

•3.根据转换说明符,将宽字符字符串中的数据转换为对应的数据类型,并存储到相应的变量中。

转换说明符可以指定整数、浮点数、字符串等不同的数据类型。

•4.如果成功读取到数据并转换成功,则返回成功读取的参数个数;如果读取失败或转换失败,则返回负数。

4. 示例代码下面是一个简单的示例代码,演示了如何使用swscanf函数从宽字符字符串中读取数据。

#include <stdio.h>#include <wchar.h>int main() {wchar_t ws[100];int num;float f;// 从宽字符字符串中读取整数和浮点数swscanf(L"10 3.14", L"%d %f", &num, &f);wprintf(L"num = %d\n", num);wprintf(L"f = %f\n", f);return 0;}在上面的示例代码中,我们定义了一个宽字符数组ws,用于存储宽字符字符串。

PHPrawurlencode()和urlencode()函数区别

PHPrawurlencode()和urlencode()函数区别

PHPrawurlencode()和urlencode()函数区别rawurlencode遵守是94年国际标准备忘录RFC 1738,urlencode实现的是传统做法,和上者的主要区别是对空格的转义是'+'⽽不是'%20'javascript的encodeURL也是94年标准,⽽javascript的escape是另⼀种⽤"%xxx"标记unicode编码的⽅法。

推荐在PHP中使⽤⽤rawurlencode。

弃⽤urlencode样例source:超级⽆敌的⼈sadha sajdh数据样本sdls fhejrthcxzb.file.jpegPHP urlencode:%E8%B6%85%E7%BA%A7%E6%97%A0%E6%95%8C%E7%9A%84%E4%BA%BAsadha+sajdh%E6%95%B0%E6%8D%AE%E6%A0%B7%E6%9C%ACsdls+fhejrthcxzb.file.jpeg PHP rawurlencode:%E8%B6%85%E7%BA%A7%E6%97%A0%E6%95%8C%E7%9A%84%E4%BA%BAsadha%20sajdh%E6%95%B0%E6%8D%AE%E6%A0%B7%E6%9C%ACsdls%20fhejrthcxzb.file.jpeg Javascript encodeURI:%E8%B6%85%E7%BA%A7%E6%97%A0%E6%95%8C%E7%9A%84%E4%BA%BAsadha%20sajdh%E6%95%B0%E6%8D%AE%E6%A0%B7%E6%9C%ACsdls%20fhejrthcxzb.file.jpeg Javascript escape:%u8D85%u7EA7%u65E0%u654C%u7684%u4EBAsadha%20sajdh%u6570%u636E%u6837%u672Csdls%20fhejrthcxzb.file.jpeg其PHP ⼿册描述为:rawurlencode -- 按照 RFC 1738 对 URL 进⾏编码描述string rawurlencode ( string str )返回字符串,此字符串中除了-_.之外的所有⾮字母数字字符都将被替换成百分号(%)后跟两位⼗六进制数。

wstring 函数

wstring 函数

wstring 函数wstring函数是C++中的一种数据类型,用于表示宽字符序列。

它是由wstring类所定义的,可以用来存储Unicode字符集中的字符。

在本文中,我们将详细介绍wstring函数的用法及其特点。

wstring函数可以用来处理包含中文等非英文字符的字符串。

相对于普通的string函数,wstring函数可以更好地处理Unicode编码,因为它的每个字符都占用两个字节的存储空间,可以容纳更多种类的字符。

wstring函数的声明方式与string函数类似,例如:```c++wstring str = L"你好,世界!";```在上面的例子中,我们使用了宽字符前缀L来声明wstring类型的变量str,并赋予了一个包含中文字符的字符串。

需要注意的是,为了支持宽字符,我们需要在字符串的前面添加宽字符前缀L。

与string函数类似,wstring函数也提供了一系列的成员函数来进行字符串的操作。

例如,我们可以使用size()函数来获取字符串的长度,使用empty()函数来判断字符串是否为空,使用substr()函数来截取子串等等。

wstring函数还可以与其他字符串类型进行转换。

我们可以使用c_str()函数将wstring类型的字符串转换为C风格的字符串,使用assign()函数将普通的string类型的字符串赋值给wstring类型的变量。

需要注意的是,由于wstring函数中每个字符占用两个字节的存储空间,因此在进行字符串操作时,需要注意字符的索引和长度的计算。

另外,在使用宽字符函数时,也要确保编译器和操作系统的字符集设置一致,以避免出现乱码等问题。

总结一下,wstring函数是C++中用来处理宽字符序列的数据类型,可以很好地支持Unicode编码。

它的用法与普通的string函数类似,但需要注意宽字符前缀L的使用和字符索引计算的差异。

通过使用wstring函数,我们可以更方便地处理包含中文等非英文字符的字符串,提高程序的兼容性和可移植性。

wstring 函数

wstring 函数

wstring 函数wstring函数是C++中的一种字符串类型,它可以存储Unicode字符,而不仅仅是ASCII字符。

本文将介绍wstring函数的定义、用法以及与其他字符串类型的比较。

一、wstring函数的定义与用法1.定义:wstring函数是C++标准库中的一种字符串类型,它是基于wchar_t类型实现的。

在使用wstring之前,需要包含头文件<wstring>。

2.用法:使用wstring函数可以创建、操作和处理Unicode字符串。

与普通的string函数相比,wstring函数具有更大的存储容量和更广泛的字符表示范围。

3.示例代码:```cpp#include <iostream>#include <string>int main() {std::wstring str = L"你好,世界!";std::wcout << str << std::endl;return 0;}```二、wstring函数与其他字符串类型的比较1.与string函数的比较:wstring函数可以存储更多的字符类型,包括Unicode字符。

而string函数只能存储ASCII字符。

因此,当需要处理非ASCII字符或多语言字符时,wstring函数更适合使用。

2.与char函数的比较:char函数是C语言中表示字符的一种数据类型,而wstring函数是C++中表示字符串的一种数据类型。

char 函数只能表示一个字符,而wstring函数可以表示多个字符。

因此,在处理字符串时,wstring函数更加灵活和方便。

3.与char*函数的比较:char*函数是C语言中表示字符串的一种数据类型,而wstring函数是C++中表示字符串的一种数据类型。

char*函数是以null结尾的字符数组,而wstring函数是以null结尾的宽字符数组。

wprintf函数

wprintf函数

wprintf函数题目:请简述wprintf函数的作用及使用方法。

wprintf函数是一个宽字符输出函数。

它是C语言标准库的一部分,用于将格式化的数据输出到标准输出流中。

wprintf函数的使用方法和printf函数类似,只不过它要输出宽字符,即Unicode字符。

它的原型如下:int wprintf(const wchar_t *format, ...);其中,format参数是输出格式字符串,后续参数是要输出的数据,可以是任何类型的数据,包括字符串、数字、字符等等。

要使用wprintf函数,需要在程序中包含头文件<wchar.h>。

通过指定输出的格式字符串,来控制输出的样式和内容。

以下是一些常用的格式控制字符:• %c:输出一个字符。

• %s:输出一个字符串。

• %d:输出一个十进制整数。

• %f:输出一个实数。

• %x:输出一个十六进制整数。

wprintf函数输出的字符可以是包含中文、日文、韩文等非ASCII字符的Unicode字符。

对于Unicode字符串,在Windows下,需要把它们保存为UTF-16编码(即16位编码)。

在Linux下,一般采用UTF-8编码,可以使用标准C库的函数来进行转换。

不过需要注意的是,由于wprintf函数中包含格式化字符串参数,所以如果使用不当,就可能会导致缓冲区溢出、格式化错误等问题,产生安全风险。

因此在使用wprintf函数时,一定要遵循以下几点:• 格式字符串中使用%等控制字符时,一定要保证后面的参数类型和数量与格式化字符串的控制字符匹配。

• format格式字符串中的%控制字符,最好使用整数类的长度修改符,比如%ld、%lld、%hd等。

• 避免在format格式字符串中使用不受信任的参数,以免引发安全问题。

总之,wprintf函数在输出非ASCII字符时非常有用,但是在使用时,需要格外小心,以确保程序的正确性和安全性。

wcsstr函数

wcsstr函数

wcsstr函数wcsstr函数是C/C++语言中的一个字符串处理函数,用于在一个宽字符字符串中查找子字符串的位置。

该函数的语法为:wchar_t* wcsstr(const wchar_t* str1, const wchar_t* str2);其中,str1为被查找的宽字符字符串,str2为要查找的子字符串。

如果找到了子字符串,则该函数将返回指向该子字符串的指针;否则返回空指针。

该函数在查找子字符串时是区分大小写的。

如果需要不区分大小写地查找子字符串,可以使用_wcsistr函数。

下面是一个示例程序,演示了如何使用wcsstr函数查找子字符串:```c++#include <iostream>#include <wchar.h>int main(){const wchar_t* str1 = L'Hello World';const wchar_t* str2 = L'World';wchar_t* result = wcsstr(str1, str2);if (result){std::wcout << L'找到了子字符串,位置为:' << result - str1<< std::endl;}else{std::wcout << L'未找到子字符串' << std::endl;}return 0;}```该程序将输出:```找到了子字符串,位置为:6```表示在字符串'Hello World'中成功找到了子字符串'World',并且该子字符串的位置为第6个字符。

wcslen函数

wcslen函数

wcslen函数
wcslen函数是一个用于测量宽字符字符串长度(也称为Unicode字符串)的函数。


C和C++编程中,它是一个非常常用的函数,因为它可以帮助开发者计算字符串的长度,从而确定数组的大小和遍历字符串。

size_t wcslen(const wchar_t* str);
str是要计算长度的宽字符字符串。

函数返回字符串的长度,不包括末尾的null字符。

与strlen函数不同,wcslen函数可以处理Unicode字符串。

Unicode是一种通用的字符编码方案,它可以处理几乎所有的字符集,包括中文、日文、韩文等语言。

在Unicode 中,每个字符都用一个唯一的代码点(code point)表示,所以可以使用wcslen函数来计算Unicode字符串的长度。

#include <wchar.h>
#include <stdio.h>
输出:
字符串'你好,世界!'的长度是:7
该示例中,使用了const wchar_t*类型的字符串str,该字符串包含了中文文字'你好,世界!'。

通过调用wcslen函数,计算出字符串的长度,并输出到控制台。

需要注意的是,在使用wcslen函数时,必须使用宽字符编码(如wchar_t或L""前缀)来表示字符串。

否则,该函数将无法正确处理非ASCII字符,并导致错误的长度计算。

总之,wcslen函数是一个十分实用的函数,它可以用来计算宽字符(Unicode)字符串的长度,利用它可以简化开发者的工作,提高程序的可维护性和可读性。

vs中字符串比较函数

vs中字符串比较函数

Visual Studio中的字符串比较函数详解在编程过程中,字符串的比较是非常常见的操作。

Visual Studio(VS)作为一款强大的开发工具,提供了多种字符串比较函数以满足不同的需求。

本文将详细介绍其中几种常用的字符串比较函数。

1. strcmp() 函数strcmp() 是C++标准库中提供的一个用于比较两个字符串的函数。

其基本语法为:int strcmp(const char *str1, const char *str2); 返回值为0表示相等,小于0表示str1小于str2,大于0表示str1大于str2。

2. wcscmp() 函数wcscmp() 是wchar_t类型版本的strcmp(),用于比较宽字符字符串。

基本语法为:int wcscmp(const wchar_t *str1, const wchar_t *str2); 使用方式与strcmp()相同。

3. strncmp() 函数strncmp() 用于比较字符串的前n个字符。

基本语法为:int strncmp(const char *str1, const char *str2, size_t n); 当只需要比较部分字符串时,可以使用此函数。

4. _stricmp() 和 _wcsicmp() 函数_stricmp() 和 _wcsicmp() 分别是不区分大小写的strcmp()和wcscmp()。

在进行字符串比较时不考虑字母的大小写,这对于某些场景非常有用。

5. strcoll() 函数strcoll() 函数根据当前区域设置进行字符串比较。

这使得在处理多语言环境时,可以根据本地化规则进行字符串比较。

6. _stricmp_l() 和 _wcsicmp_l() 函数这些函数是在特定区域设置下执行不区分大小写的字符串比较。

它们接受一个额外的参数,该参数指定要使用的区域设置。

7. _mbscmp() 和 _mbsicmp() 函数_mbscmp() 和 _mbsicmp() 分别是比较多字节字符字符串和不区分大小写的多字节字符字符串。

_T()和_L()_TEXT__T,L区别与联系详解

_T()和_L()_TEXT__T,L区别与联系详解

_T()和_L()_TEXT__T,L区别与联系详解_T("")是⼀个宏,他的作⽤是让你的程序⽀持Unicode编码因为Windows使⽤两种字符集ANSI和UNICODE,前者就是通常使⽤的单字节⽅式,但这种⽅式处理象中⽂这样的双字节字符不⽅便,容易出现半个汉字的情况。

⽽后者是双字节⽅式,⽅便处理双字节字符。

Windows NT的所有与字符有关的函数都提供两种⽅式的版本,⽽Windows 9x只⽀持ANSI⽅式。

如果你编译⼀个程序为ANSI⽅式,_T实际不起任何作⽤。

⽽如果编译⼀个程序为UNICODE⽅式,则编译器会把"Hello"字符串以UNICODE⽅式保存。

_T和_L的区别在于,_L不管你是以什么⽅式编译,⼀律以UNICODE⽅式保存。

如果是UNICODE#define __TEXT(quote) L##quote#define __T(x) L##x否则#define __TEXT(quote) quote#define __T(x) x在TCHAR.h#define _T(x) __T(x)#define _TEXT(x) __T(x)L"Hello!" ----- 引号前⾯的⼤写字母L(代表「long」)。

这将告诉编译器该字串按宽字符保存——即每个字符占⽤2个字节。

则字串变量需要14个字节-每个字符需要2个字节,末尾的0还需要2个字节。

////////////////////////////////////////////////////size_t,__T,_T,TEXT,_TEXT等⼀些特殊宏的理解Unicode解决⽅案对于wchar_t在WCHAR.h中是这样定义的:#define unsigned short wchar_t那么现在你该理解它了吧。

因此,wchar_t数据型态与⽆符号短整数型态相同,都是16位宽。

要定义包含⼀个宽字符的变量,可使⽤下⾯的语句:wchar_t c = 'A' ;变量c是⼀个双字节值0x0041,是Unicode表⽰的字母A。

c++width函数

c++width函数

c++width函数
C++中的width函数是一个输出流控制符,它用于设置输出流中每个字段的宽度。

通常情况下,输出流使用默认的字段宽度,即输出字段中的字符数。

但是,通过使用width函数,可以为输出流中的每个字段单独设置宽度。

width函数可以接受一个整数参数,该参数指定要设置的字段宽度。

例如,以下代码将设置输出流中的每个字段为10个字符宽度: cout.width(10);
此外,可以通过使用left、right和internal等控制符来指定字段对齐方式。

例如,以下代码将设置输出流中的每个字段为10个字符宽度,并左对齐:
cout.width(10);
cout.setf(ios::left);
在使用width函数时,需要注意以下几点:
1. width函数只对下一个输出操作起作用。

2. width函数设置的宽度是以字符为单位的,而不是以字节为单位的。

3. 如果需要将宽度设置回默认值,则可以使用width(0)。

4. 可以将多个控制符组合在一起,以更好地控制输出流的格式。

总之,C++中的width函数是一个非常有用的控制符,它可以帮助我们更好地控制输出流的格式。

- 1 -。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

宽字符处理函数函数与普通函数对照表字符分类:宽字符函数普通C函数描述iswalnum() isalnum()测试字符是否为数字或字母iswalpha() isalpha()测试字符是否是字母iswcntrl() iscntrl()测试字符是否是控制符iswdigit() isdigit()测试字符是否为数字iswgraph() isgraph()测试字符是否是可见字符iswlower() islower()测试字符是否是小写字符iswprint() isprint()测试字符是否是可打印字符iswpunct() ispunct()测试字符是否是标点符号iswspace() isspace()测试字符是否是空白符号iswupper() isupper()测试字符是否是大写字符iswxdigit() isxdigit()测试字符是否是十六进制的数字大小写转换:宽字符函数普通C函数描述towlower() tolower()把字符转换为小写towupper() toupper()把字符转换为大写字符比较:宽字符函数普通C函数描述wcscoll() strcoll()比较字符串日期和时间转换:宽字符函数描述strftime()根据指定的字符串格式和locale设置格式化日期和时间wcsftime()根据指定的字符串格式和locale设置格式化日期和时间,并返回宽字符串strptime()根据指定格式把字符串转换为时间值,是strftime的反过程打印和扫描字符串:宽字符函数描述fprintf()/fwprintf()使用vararg参量的格式化输出fscanf()/fwscanf()格式化读入printf()使用vararg参量的格式化输出到标准输出scanf()从标准输入的格式化读入sprintf()/swprintf()根据vararg参量表格式化成字符串sscanf()以字符串作格式化读入vfprintf()/vfwprintf()使用stdarg参量表格式化输出到文件vprintf()使用stdarg参量表格式化输出到标准输出vsprintf()/vswprintf()格式化stdarg参量表并写到字符串数字转换:宽字符函数普通C函数描述wcstod() strtod()把宽字符的初始部分转换为双精度浮点数wcstol() strtol()把宽字符的初始部分转换为长整数wcstoul() strtoul()把宽字符的初始部分转换为无符号长整数多字节字符和宽字符转换及操作:宽字符函数描述mblen()根据locale的设置确定字符的字节数mbstowcs()把多字节字符串转换为宽字符串mbtowc()/btowc()把多字节字符转换为宽字符wcstombs()把宽字符串转换为多字节字符串wctomb()/wctob()把宽字符转换为多字节字符输入和输出:宽字符函数普通C函数描述fgetwc() fgetc()从流中读入一个字符并转换为宽字符fgetws() fgets()从流中读入一个字符串并转换为宽字符串fputwc() fputc()把宽字符转换为多字节字符并且输出到标准输出fputws() fputs() 把宽字符串转换为多字节字符并输出到标准输出串getwc() getc()从标准输入中读取字符,并且转换为宽字符getwchar() getchar()从标准输入中读取字符,并且转换为宽字符None gets()使用fgetws()putwc() putc()把宽字符转换成多字节字符并且写到标准输出putwchar() putchar()把宽字符转换成多字节字符并且写到标准输出None puts()使用fputws()ungetwc() ungetc()把一个宽字符放回到输入流中字符串操作:宽字符函数普通C函数描述wcscat() strcat()把一个字符串接到另一个字符串的尾部wcsncat() strncat()类似wcscat(),指定粘接字符串的粘接长度wcschr() strchr()查找子字符串的第一个位置wcsrchr() strrchr()从尾部开始查找子字符串出现的第一个位置wcspbrk() strpbrk()从一字符串中查找另一字符串中任何一个字符第一次出现的位置wcswcs()/wcsstr() strchr() 在一字符串中查找另一字符串第一次出现的位置wcscspn() strcspn()返回不包含第二个字符串的的初始数目wcsspn() strspn()返回包含第二个字符串的初始数目wcscpy() strcpy()拷贝字符串wcsncpy() strncpy()类似于wcscpy(),同时指定拷贝的数目wcscmp() strcmp()比较两个宽字符串wcsncmp() strncmp()类似wcscmp(),要指定比较字符字符串的数目wcslen() strlen()获得宽字符串的数目wcstok() strtok()根据标示符把宽字符串分解成一系列字符串wcswidth() None 获得宽字符串的宽度wcwidth() None 获得宽字符的宽度另外还有对应于memory操作的 wmemcpy() wmemchr() wmemcmp() wmemmove() wmemset()String Function=====================================CharLowerWrapWCharUpperBuffWrapWChrCmpICompareStringWrapWGetAcceptLanguagesGetDateFormatWrapWGetTimeFormatWrapWIntlStrEqNIntlStrEqNIIntlStrEqWorkerIsCharAlphaNumericWrapWIsCharSpaceOutputDebugStringWrapWSHLoadIndirectStringSHStrDupStrCatStrCatBuffStrCatChainWStrChrStrChrIStrCmpStrCmpCStrCmpIStrCmpICStrCmpLogicalWStrCmpNStrCmpNCStrCmpNIStrCmpNICStrCpyStrCpyNStrCSpnStrCSpnIStrDupStrFormatByteSize64 StrFormatByteSizeA StrFormatByteSizeWStrFormatKBSizeStrFromTimeIntervalStrIsIntlEqualStrNCatStrPBrkStrRChrStrRChrIStrRetToBSTRStrRetToBufStrRetToStrStrRetToStrNStrRStrIStrSpnStrStrStrStrIStrToIntStrToInt64ExStrToIntExStrTrimwnsprintfwvnsprintfPath Functions===================================== PathAddBackslashPathAddExtensionPathAppendPathBuildRootPathCanonicalizePathCombinePathCommonPrefixPathCompactPathPathCompactPathExPathCreateFromUrl PathCreateFromUrlAllocPathFileExistsPathFindExtensionPathFindFileName PathFindNextComponentPathFindOnPath PathFindSuffixArray PathGetArgs PathGetCharType PathGetDriveNumber PathIsContentType PathIsDirectory PathIsDirectoryEmpty PathIsFileSpec PathIsHTMLFile PathIsLFNFileSpec PathIsNetworkPath PathIsPrefix PathIsRelative PathIsRoot PathIsSameRoot PathIsSystemFolder PathIsUNC PathIsUNCServer PathIsUNCServerShare PathIsURL PathMakePretty PathMakeSystemFolder PathMatchSpec PathMatchSpecEx PathParseIconLocation PathQuoteSpaces PathRelativePathTo PathRemoveArgs PathRemoveBackslash PathRemoveBlanks PathRemoveExtension PathRemoveFileSpec PathRenameExtension PathSearchAndQualify PathSetDlgItemPath PathSkipRoot PathStripPath PathStripToRoot PathUndecorate PathUnExpandEnvStrings PathUnmakeSystemFolder PathUnquoteSpacesSHSkipJunctionUrlApplySchemeUrlCanonicalizeUrlCombineUrlCompareUrlCreateFromPathUrlEscapeUrlEscapeSpacesUrlFixupWUrlGetLocationUrlGetPartUrlHashUrlIsUrlIsFileUrlUrlIsNoHistoryUrlIsOpaqueUrlUnescapeUrlUnescapeInPlaceRegistry Functions===================================== AssocCreateAssocGetPerceivedType AssocIsDangerousAssocQueryKeyAssocQueryString AssocQueryStringByKeySHCopyKeySHDeleteEmptyKeySHDeleteKeySHDeleteValueSHEnumKeyExSHEnumValueSHGetValueSHOpenRegStreamSHOpenRegStream2SHQueryInfoKeySHQueryValueExSHRegCloseUSKeySHRegCreateUSKey SHRegDeleteEmptyUSKey SHRegDeleteUSValue SHRegDuplicateHKeySHRegEnumUSKeySHRegEnumUSValue SHRegGetBoolUSValueSHRegGetIntWSHRegGetPathSHRegGetUSValueSHRegGetValueSHRegOpenUSKey SHRegQueryInfoUSKey SHRegQueryUSValueSHRegSetPathSHRegSetUSValueSHRegSetValueSHRegWriteUSValueSHSetValueColor Palette Functions===================================== ColorAdjustLumaColorHLSToRGBColorRGBToHLSSHCreateShellPalette SHGetInverseCMAP。

相关文档
最新文档