c 字符串大小写转换.pdf
c 字符串大小写转换c+c+字符串大小写转换字符串大小写转换在 C+中,由于没有单独定义 string 这个对象,所以字符串的操作比较麻烦些。字符串转换大小写是一个常用的功能,今天就简单总结下常用转换的方法:由于 ANSI和 Unicode 在函数名上有差别,故都列出来,不过本人以 Unicode为主。【1.用 C 语言标准库函数 toupper,tolower】头文件:cctypec 下面:ctype.h转大写Ansi 版:int toupper(int c);Unicode 版:int towupper(wint_t c);MSDN:toupper,_toupper,towupper,_toupper_l,_towupper_l转小写:int tolower(int c);int towlower(wint_t c);MSDN:tolower缺陷:只能转换单个字符Example:WCHAR wch=a;wch=towupper(wch);/A【2.用 C+语言标准库函数_strlwr_s,_strupr_s】注意:要使用安全的字符串函数,不要用_strlwr。注意事项:strlwr 在 Linux 的编译器中,有可能会编译不通过。头文件:string.h转小写:Ansi:errno_t _strlwr_s(char*str,size_t numberOfElements);Unicode:errno_t _wcslwr_s(wchar_t*str,size_t numberOfElements);注意:numberOfElements 要加上最后 NULL 字符长度,即 numberOfElements=strlen(str)+1;MSDN:http:/ _strupr_s(char*str,size_t numberOfElements);errno_t _wcsupr_s(wchar_t*str,size_t numberOfElements);MSDN:http:/ wideStr=LAbc;_wcslwr_s(wideStr,wcslen(wideStr)+1);/abc_wcsupr_s(wideStr,wcslen(wideStr)+1);/ABC【3.std:string 转换大小写】很遗憾,std:string 没有提供大小写转换的功能,所以只能用 STL 中的 transform结合 toupper/tolower完成。头文件:string,cctype,algorithm转小写transform(str.begin(),str.end(),str.begin(),tolower);transform(wstr.begin(),wstr.end(),wstr.begin(),towlower);转大写transform(s.begin(),s.end(),s.begin(),toupper);transform(wstr.begin(),wstr.end(),wstr.begin(),towupper);Example:wstring wstr=LAbc;transform(wstr.begin(),wstr.end(),wstr.begin(),towupper);【4.boost库中string_algorithm 提供了大小写转换函数to_lower 和 to_upper】Example:#include using namespace std;using namespace boost;wstring wstr=LAbc;boost:to_lower(wstr);/abc=附完整 Example*filetest.cpp*brief字符大小写转换*date2009-7-1*/#include stdafx.h#include#include#include#include#include boostalgorithmstring.hppusing namespace std;int wmain(int argc,WCHAR*argv)char ch=a;ch=toupper(ch);WCHAR wch=a;wch=towupper(wch);WCHAR wideStr=LAbc;_wcslwr_s(wideStr,wcslen(wideStr)+1);_wcsupr_s(wideStr,wcslen(wideStr)+1);wstring wstr=LAbc;transform(wstr.begin(),wstr.end(),wstr.begin(),towupper);boost:to_lower(wstr);return 0;