程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++字符串大小寫轉換

c++字符串大小寫轉換

編輯:C++入門知識

c++字符串大小寫轉換在C++中,由於沒有單獨定義string這個對象,所以字符串的操作比較麻煩些。
  字符串轉換大小寫是一個常用的功能,今天就簡單總結下常用轉換的方法:由於ANSI和Unicode在函數名上有差別,故都列出來,不過本人以Unicode為主。
  「1.用C語言標准庫函數toupper,tolower」
  頭文件:cctype   c下面:ctype.h轉大寫Ansi版: int toupper(int c);</a> 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.頭文件: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://msdn.microsoft.com/en-us/library/y889wzfw(VS.80)。aspx轉大寫:errno_t _strupr_s(char *str,size_t numberOfElements);errno_t _wcsupr_s(wchar_t * str,size_t numberOfElements);MSDN: http://msdn.microsoft.com/en-us/library/sae941fh(VS.80)。aspx Example:WCHAR wideStr[] = L"Abc";_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 =L"Abc";transform(wstr.begin(), wstr.end(), wstr.begin(), towupper);「4.boost庫中string_algorithm 提供了大小寫轉換函數to_lower 和 to_upper」
  Example:#include <boost/algorithm/string.hpp> using namespace std;using namespace boost;wstring wstr =L"Abc";boost::to_lower(wstr); // abc ====================================================================附完整Example ** * @file     test.cpp * @brief    字符大小寫轉換* @author   [email protected] * @date     2009-7-1 */ #include "stdafx.h" #include <cstring> #include <windows.h> #include <cctype> #include <algorithm> #include "boost\algorithm\string.hpp" using namespace std;int wmain(int argc, WCHAR* argv[])
  { char ch = 'a';ch = toupper(ch);WCHAR wch = 'a';wch = towupper(wch);WCHAR wideStr[] = L"Abc";_wcslwr_s(wideStr, wcslen(wideStr) + 1);_wcsupr_s(wideStr, wcslen(wideStr) + 1);wstring wstr =L"Abc";transform(wstr.begin(), wstr.end(), wstr.begin(), towupper);boost::to_lower(wstr);return 0;}看了這個例子,覺得STL的一些東西很值得我花時間去學習一下。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved