• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            (地基工)std string 的常用使用

            Posted on 2011-04-15 11:56 點點滴滴 閱讀(1254) 評論(0)  編輯 收藏 引用 所屬分類: 02 編程語言
             string來代替char * 數組,使用sort排序算法來排序,用unique 函數來去重
            1、Define
                    string s1 = "hello";
                    string s2 = "world";
                    string s3 = s1 + "," + s2 +"!\n";
            2、append
                    s1 += ",shanshan\n";
            3、Compare
                    if(s1 == s2)
                       .....
                    else if(s1 == "hello")
                       .....
            4、 string 重載了許多操作符,包括 +, +=, <, =, , [], <<, >>等,正式這些操作符,對字符串操作非常方便
            #include <string>
            #include <iostream>
            using namespace std;
            int main(){
            string strinfo="Please input your name:";
            cout << strinfo ;
            cin >> strinfo;
            if( strinfo == "winter" )
            cout << "you are winter!"<<endl;
            else if( strinfo != "wende" )
            cout << "you are not wende!"<<endl;
            else if( strinfo < "winter")
            cout << "your name should be ahead of winter"<<endl;
            else
            cout << "your name should be after of winter"<<endl;
            strinfo += " , Welcome to China!";
            cout << strinfo<<endl;
            cout <<"Your name is :"<<endl;
            string strtmp = "How are you? " + strinfo;
            for(int i = 0 ; i < strtmp.size(); i ++)
            cout<<strtmp[i];
            return 0;
            }
            5、find函數
            由于查找是使用最為頻繁的功能之一,string 提供了非常豐富的查找函數。其列表如下:
            函數名 描述
            find 查找
            rfind 反向查找
            find_first_of 查找包含子串中的任何字符,返回第一個位置
            find_first_not_of 查找不包含子串中的任何字符,返回第一個位置
            find_last_of 查找包含子串中的任何字符,返回最后一個位置
            find_last_not_of 查找不包含子串中的任何字符,返回最后一個位置
            以上函數都是被重載了4次,以下是以find_first_of 函數為例說明他們的參數,其他函數和其參數一樣,也就是說總共有24個函數:
            size_type find_first_of(const basic_string& s, size_type pos = 0)
            size_type find_first_of(const charT* s, size_type pos, size_type n)
            size_type find_first_of(const charT* s, size_type pos = 0)
            size_type find_first_of(charT c, size_type pos = 0)

            所有的查找函數都返回一個size_type類型,這個返回值一般都是所找到字符串的位置,如果沒有找到,則返回string::npos。
            其實string::npos表示的是-1。即沒找到就返回-1。例子如下:
            #include <string>
            #include <iostream>
            using namespace std;
            int main(){
            string strinfo=" //*---Hello Word!......------";
            string strset="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
            int first = strinfo.find_first_of(strset);
            if(first == string::npos) {
            cout<<"not find any characters"<<endl;
            return -1;
            }
            int last = strinfo.find_last_of(strset);
            if(last == string::npos) {
            cout<<"not find any characters"<<endl;
            return -1;
            }
            cout << strinfo.substr(first, last - first + 1)<<endl;//string.substr是子串
            return 0;
            }
            6、insert函數, replace函數和erase函數

            string只是提供了按照位置和區間的replace函數,而不能用一個string字串來替換指定string中的另一個字串。
            例子:
            #include <string>
            #include <iostream>
            using namespace std;
            int main() {
            string strinfo="This is Winter, Winter is a programmer. Do you know Winter?";
            cout<<"Orign string is :\n"<<strinfo<<endl;
            string_replace(strinfo, "Winter", "wende");
            cout<<"After replace Winter with wende, the string is :\n"<<strinfo<<endl;
            return 0;
            }

            string.erase(pos,srclen);//srclen是刪除的長度
            string.insert(pos,strdst); //pos是定位,strdst是插入的函數
            void string_replace(string & strBig, const string & strsrc, const string &strdst) {
            string::size_type pos=0;
            string::size_type srclen=strsrc.size();
            string::size_type dstlen=strdst.size();
            while( (pos=strBig.find(strsrc, pos)) != string::npos){
            strBig.erase(pos, srclen);
            strBig.insert(pos, strdst);
            pos += dstlen;
            }
            }

            相關鏈接:http://www.stlchina.org/twiki/bin/view.pl/Main/STLDetailString
             
            7、切割字符串

            輸出如下:
            big
            dog
            china
            sonic
            free

            8、構造函數和析構函數
            string s 生成一個空字符串S
            string s(str) Copy構造函數,生成字符串Str的一個復制品
            string s(str,stridx) 將字符串Str內始于位置Stridx的部分,當作字符串S的初值
            string s(str,stridx,strlen) 將字符串Str內始于位置Stridx且長度為strlen的部分,當作字符串S的初值
            string s(cstr)            以C-String cstr作為S的初值
            string s(num,c)           生成一個字符串,包含Num個C字符
            string s(beg,end)         以區間[beg,end]內的字符作為s初值
            s.~string()               銷毀所有字符,釋放內存
            注意:
            std::string s('x');//error
            std::string s(1,'x'); //ok,create a string that has one charactor 'x'

            9、substr(string.substr的方法) 

            (1)參數

            start:Number -- 一個整數,指示 my_str 中用于創建子字符串的第一個字符的位置。如果 start 為一個負數,則起始位置從字符串的結尾開始確定,其中 -1 表示最后一個字符。

            length:Number -- 要創建的子字符串中的字符數。如果沒有指定 length,則子字符串包括從字符串開頭到字符串結尾的所有字符。

            (2)返回

            String -- 指定字符串的子字符串。

            (3)示例

            下面的示例創建一個新字符串 my_str,并使用 substr() 返回該字符串中的第二個單詞;首先,使用正的 start 參數,然后使用負的 start 參數:

            var my_str:String = new String("Hello world");
            var mySubstring:String = new String();
            mySubstring = my_str.substr(6,5);
            trace(mySubstring); // 輸出:world

            mySubstring = my_str.substr(-5,5);
            trace(mySubstring); // 輸出:world

            久久涩综合| 无码人妻久久一区二区三区免费丨| 久久99国产乱子伦精品免费| 国产激情久久久久影院老熟女| 伊人久久大香线焦AV综合影院 | 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产精品成人精品久久久| 国产精品午夜久久| 久久人人爽人人爽人人av东京热| 国产成人精品久久免费动漫| 人妻无码精品久久亚瑟影视 | 国产2021久久精品| 精品久久久中文字幕人妻| 久久国产成人精品麻豆| 日韩精品久久无码人妻中文字幕| 国产精品久久久久久久久久影院 | 久久97精品久久久久久久不卡| 久久久中文字幕日本| 99久久国产热无码精品免费| 欧美久久亚洲精品| 精品国产乱码久久久久久浪潮| 99999久久久久久亚洲| 欧美日韩精品久久久久| 国产69精品久久久久9999| 久久综合香蕉国产蜜臀AV| 日韩久久无码免费毛片软件| 久久精品中文字幕久久| 91精品国产综合久久香蕉| 伊人久久大香线蕉精品| 欧美黑人又粗又大久久久| 四虎亚洲国产成人久久精品| 99久久成人18免费网站| 777米奇久久最新地址| 丁香狠狠色婷婷久久综合| 午夜精品久久久久久中宇| 亚洲国产精品无码久久一区二区| 久久久午夜精品| 久久久久久久久无码精品亚洲日韩| 97久久久久人妻精品专区| 久久久久无码精品国产| 久久精品欧美日韩精品|