一、基本概念
在編程過程中,我們常常需要將字元串中的小寫字母全部轉化為大寫字母,以便於處理數據;或者將用戶輸入的字元串進行標準化處理。這裡我們將會介紹幾種實現方式。
二、for循環實現
for循環實現轉換方法:
// 字元串轉大寫
#include
#include
using namespace std;
string toUpper(string s){
for(int i=0;i='a' && s[i]<='z'){
s[i]=s[i]-('a'-'A');
}
}
return s;
}
int main(){
string s="I love C++";
cout<<toUpper(s)<<endl;
return 0;
}
代碼實現通過循環逐個判斷字元串中字元,判斷是否為小寫字母,若是,利用ASCII碼進行轉換。
三、algorithm庫實現
實現代碼:
// 字元串轉大寫
#include
#include
#include
using namespace std;
int main(){
string s="I love C++";
transform(s.begin(),s.end(),s.begin(),::toupper);
cout<<s<<endl;
return 0;
}
代碼實現使用STL庫中的algorithm,具體是transform函數,利用函數指針toupper及迭代器,對字元串進行循環逐個判斷,若是小寫字母,利用toupper函數進行轉換。
四、lambda表達式實現
實現代碼:
// 字元串轉大寫
#include
#include
#include
using namespace std;
int main(){
string s="I love C++";
transform(s.begin(),s.end(),s.begin(),[](unsigned char c){ return toupper(c);});
cout<<s<<endl;
return 0;
}
代碼實現與algorithm幾乎相同,僅僅是利用了lambda表達式來作為函數指針,實現了更簡潔的代碼風格。
五、擴展應用
字元串轉大寫不僅僅只是將小寫字母轉大寫,還有其他許多應用。
例如:將16進位數表示轉化為大寫形式,實現如下:
// 16進位字元串轉大寫,例:a1B4c7 --> A1B4C7
#include
#include
#include
using namespace std;
int main(){
string s="a1B4c7";
transform(s.begin(),s.end(),s.begin(),[](unsigned char c){ return toupper(c);});
cout<<s<<endl;
return 0;
}
上述代碼就將16進位字元串中的小寫字母進行了轉換。
六、總結
本文對string轉大寫進行了詳細的介紹並分享了幾個實現方式,從基本概念到代碼實現,再到擴展應用。希望可以對大家學習string的使用和編程有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/285220.html
微信掃一掃
支付寶掃一掃