当前位置:C++技术网 > 资讯 > win32通用函数总结:7 CompareString,FoldString

win32通用函数总结:7 CompareString,FoldString

更新时间:2015-12-24 22:16:12浏览次数:1+次

int CompareString(LCID Locale,DWORD dwCmpFlags,DWORD lpString1,DWORD cchCount1,DWORD lpString2,DWORD cchCount2);//这个好像是旧版本
int CompareString(LCID Locale,DWORD dwCmpFlags,LPCTSTR lpString1, int cchCount1,LPCTSTR lpString2,int cchCount2);
参数解释:Locale是数据集,有两种类型:LOCALE_SYSTEM_DEFAULT(系统数据集),LOCALE_USER_DEFAULT(用户数据集) dwCmpFlags是字符串比较标识,有六种类型:

            NORM_IGNORECASE,忽略大小写

            NORM_IGNOREKANATYPE,忽略平假名和片假名
             NORM_IGNORENONSPACE,忽略空格
             NORM_IGNORESYMBOLS,忽略符号,比如英语的音标符号
             NORM_IGNOREWIDTH,忽略字符占有的字节数,在unicode编码中,每个字符占两字节,在ASCII编码中,每个字符占一字节
             SORT_STRINGSORT,将标点符号和符号视为相同,可以查一下punctuation和symbols的区别
 lpString1是以空为结尾的字符串
 cchCount1是取出lpString1用来比较的字符个数,如果该值为-1,则自动计算lpString1的长度并赋值
 lpString2是以空为结尾的字符串
 cchCount2是取出lpString2用来比较的字符个数,如果该值为-1,则自动计算lpString2的长度并赋值  
返回值:返回字符串比较结果,有三种类型:CSTR_LESS_THAN,前者小于后者,CSTR_EQUAL,两者相等,CSTR_GREATER_THAN,后者大于前者
函数作用:比较两个字符串的大小
代码例子:
#include <Windows.h>
#include <tchar.h>
int main()
{
LCID Locale = LOCALE_SYSTEM_DEFAULT;
DWORD dwCmpFlags = NORM_IGNORECASE;
const TCHAR *lpString1 = _T("abc");;
DWORD cchCount1 = -1;
const TCHAR *lpString2 = _T("abcdef");;
DWORD cchCount2 = -1;
int nResult = CompareString(Locale,dwCmpFlags,lpString1,cchCount1,lpString2,cchCount2);
switch(nResult)
{
case CSTR_LESS_THAN:
MessageBox(NULL, _T("前者小于后者"), _T(""), MB_OK);
break;
case CSTR_EQUAL:
MessageBox(NULL, _T("两者相等"), _T(""), MB_OK);
break;
case CSTR_GREATER_THAN:
MessageBox(NULL, _T("前者大于后者"), _T(""), MB_OK);
break;
default:
MessageBox(NULL, _T("字符串比较失败"), _T(""), MB_OK);
break;
}
return 0;
}
int FoldString(DWORD dwMapFlags,LPCTSTR lpSrcStr,int cchSrc,LPTSTR lpDestStr,int cchDest);
参数解释:dwMapFlags是一系列标识,用来指示在映射期间的转换类型,有5种类型:MAP_FOLDCZONE,MAP_FOLDDIGITS,
MAP_PRECOMPOSED,MAP_COMPOSITE,MAP_EXPAND_LIGATURES,具体解释请看MSDN
          lpSrcStr是指向被映射的字符串
 cchSrc表示lpSrcStr的长度大小,如果该值为负数,则假定lpSrcStr是以空为结束的字符串,长度大小自动计算
 lpDestStr是保存映射后的字符串
 cchDest表示lpDestStr的长度大小,如果cchDest为零,函数返回需要映射的字符串长度大小,
返回值:函数成功返回成功转换的字符数,失败则返回零,调用GetLastError获取错误代码,有3种类型:ERROR_INSUFFICIENT_BUFFER,ERROR_INVALID_FLAGS,ERROR_INVALID_PARAMETER
函数作用:将一个字符串映射到另一个字符串。
代码例子:
#include <Windows.h>
#include <tchar.h>
int main()
{
DWORD dwMapFlags = MAP_FOLDDIGITS;
const TCHAR lpSrcStr[10] = _T("C++技术网");
int cchSrc = -1;
TCHAR lpDestStr[10] = _T("hello");
int cchDest = 10;
int nResult = FoldString(dwMapFlags,lpSrcStr,cchSrc,lpDestStr,cchDest);
int nError = GetLastError();//调试查看nError的值,看是否有错误
MessageBox(NULL, lpDestStr, _T(""), MB_OK);//显示C++技术网
return 0;
}
可能有些地方描叙不准确或者理解有错误的地方,希望大家能提出来,我会好好改进的。