posts - 1,  comments - 0,  trackbacks - 0
点睛之笔:使用STL的最高境界就是程式看不到for和while loop,完全用STL 的algorithm搞定。
下例中我们需要将vector中的所有字符串变成小写,使用transfor()对vector中的每个string元素做处理,C\C++的字符串没有提供转写小写的功能,但是C中有对每个字符转写小写的功能。犹豫string也是个container,我们需要再次使用transform()来处理每个字符,并且使用<cctype>中的tolower()将每个字符改成小写。
09  #include <iostream>
10#include <cctype>
11#include <algorithm>
12#include <vector>
13#include <string>
14
15using namespace std;
16
17string& toLower(string&);
18
19int main() {
20  vector<string> svec;
21  svec.push_back("Stanley B. Lippman");
22  svec.push_back("Scott Meyers");
23  svec.push_back("Nicolai M. Josuttis");
24
25  // Modify each string element
26  transform(svec.begin(), svec.end(), svec.begin(), toLower);
27  
28  copy(svec.begin(),svec.end(), ostream_iterator<string>(cout,"\n"));
29
30  return 0;
31}

32
33string& toLower(string& s) {
34  // Modify each char element
35  transform(s.begin(), s.end(), s.begin(), tolower);
36  return s;
37}
补充:transform是遍历一个容器里面的元素然后执行一个操作。
        参数1和参数2是数据起始和结束位置(迭代器,也可以是string)
        如:string s="hello"; transform(s.begin(),s.end(),s.begin(),toupper);
        参数3是写入目标的起始位置;
        参数4是执行的操作(函数)。
思想2:

实例:#include<iostream>
        using namespace std;
        int my_toupper(int ch)
         {
              if(ch>='a'&&ch<='z')
               {
                   return ch-(int('a')-int('A'));
               }
              else
               {
                   return ch;
               }
          }
        int my_tolower(int ch)
         {
              if(ch>='A'&&ch<='Z')
               {
                   return ch+(int('a')-int('A'));
               }
              else
               {
                   return ch;
               }
          }


        int main()
        {
           char buf[]="abc123ABC";
           char *p=buf;
           while(*p!='\0')
           {
              cout<<(char)my_toupper(*p)
                    <<","
                    <<(char)my_tolower(*p)
                    <<endl;
              ++p;
          }
        return 0;
      }
思路3:














posted on 2012-04-06 09:14 愤怒的考拉 阅读(308) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年6月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿

随笔档案

文章档案

搜索

  •  

最新评论