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 憤怒的考拉 閱讀(315) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 边坝县| 焉耆| 搜索| 乡城县| 皮山县| 上杭县| 沧源| 东阳市| 沾益县| 永寿县| 唐海县| 肇东市| 梅河口市| 南宁市| 游戏| 正安县| 县级市| 沽源县| 清水河县| 渭源县| 新兴县| 延津县| 鄂托克前旗| 绥中县| 贡觉县| 柳河县| 田阳县| 无极县| 德格县| 唐海县| 高台县| 汝州市| 酒泉市| 根河市| 始兴县| 横山县| 武山县| 襄汾县| 柳河县| 宝山区| 梁山县|