加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

标准C、C++中字符串的大小写转换方法

(2014-05-27 22:34:43)
标签:

文化

From :  http://blog.csdn.net/xy365/article/details/7236579


如何将一个字符串转换成大写或者小写?这是字符串匹配中经常需要做的事情,然而C++的Standard Library并没有提供将std::string转成大写和小写的功能,只有在提供将char转成大写(toupper)和小写(tolower)的功能而已。

    但我们可以利用STL的transform配合toupper/tolower,完成std::string转换大(小)写的功能,也看到模版编程的威力了,一个transform函数,可以适用于任何类型,且只要自己提供 函数 ,就可完成任何Transform的动作。

    以下介绍三种standard C、C++大小写转换方法。

    一、standard C method

 

[plain] view plaincopy
  1. #include   
  2. #include   
  3.   
  4. int main()  
  5.  
  6.  char s[]="This is TEST string.";  
  7.  int -1;  
  8.  while(s[i++])  
  9.   s[i] toupper(s[i]);  
  10.   //s[i] tolower(s[i]);  
  11.   puts(s);  
  12.   
  13.  return 0;  
  14.  

 

    二、standard C++ method
    2.1 调用toupper()/tolower()函数

 

  1. #include   
  2. #include   
  3. #include   
  4. #include   
  5.   
  6. using namespace std;  
  7.   
  8. int main(void 
  9.  
  10.  string s="This is TEST stinrg." 
  11.  //original  
  12.  cout << "orig:" << << endl;  
  13.   
  14.  // to lower case  
  15.  transform(s.begin(),s.end(),s.begin(),::tolower);  
  16.  cout << "lower:" << << endl;  
  17.   
  18.  //to upper case  
  19.  transform(s.begin(),s.end(),s.begin(),::toupper);  
  20.  cout << "upper:" << << endl;  
  21.   
  22.  return 0;  
  23.  

 

    2.2 调用自己写的easytoupper()/easytolower()函数

  1. #include   
  2. #include   
  3. #include   
  4. #include   
  5.   
  6. using namespace std;  
  7.   
  8. char easytolower(char in)  
  9.  
  10.  if(in<='Z' && in>='A' 
  11.   return in-('Z'-'z');  
  12.  return in;  
  13.  
  14.   
  15. char easytoupper(char in)  
  16.  
  17.  if(in<='Z' && in>='A' 
  18.   return in+('Z'-'z');  
  19.  return in;  
  20.  
  21.   
  22. int main(void 
  23.  
  24.  string s="This is TEST stinrg." 
  25.  //original  
  26.  cout << "orig:" << << endl;  
  27.   
  28.  // to lower case  
  29.  transform(s.begin(),s.end(),s.begin(),easytolower);  
  30.  cout << "lower:" << << endl;  
  31.   
  32.  //to upper case  
  33.  //transform(s.begin(),s.end(),s.begin(),easytoupper);  
  34.  //cout << "upper:" << << endl;  
  35.   
  36.  return 0;  
  37. }  

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有