STL的algorithm库确实给我们提供了这样的便利,使用模板函数transform可以轻松解决这个问题,开发人员只需要提供一个函数对象,例如将char转成大写的toupper函数或者小写的函数tolower函数。
transform原型:
1 #include <string> 2 #include <algorithm> 3 using namespace std; 4 5 int main() 6 { 7 string strA = "yasaken@126.com"; 8 string strB = "LURY@LENOVO.com"; 9 printf("Before transform: "); 10 printf("strA:%s ", strA.c_str()); 11 printf("strB:%s ", strB.c_str()); 12 13 transform(strA.begin(), strA.end(), strA.begin(), ::toupper); 14 transform(strB.begin(), strB.end(), strB.begin(), ::toupper); 15 printf("After transform to toupper: "); 16 printf("strA:%s ", strA.c_str()); 17 printf("strB:%s ", strB.c_str()); 18 19 transform(strA.begin(), strA.end(), strA.begin(), ::tolower); 20 transform(strB.begin(), strB.end(), strB.begin(), ::tolower); 21 printf("After transform to lower: "); 22 printf("strA:%s ", strA.c_str()); 23 printf("strB:%s ", strB.c_str()); 24 return 0; 25 }
运行结果:
1 strA:yasaken@126.com 2 strB:LURY@LENOVO.com 3 4 After transform to toupper: 5 strA:YASAKEN@126.COM 6 strB:LURY@LENOVO.COM 7 8 After transform to lower: 9 strA:yasaken@126.com 10 strB:lury@lenovo.com