歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++ string 字符串的下標和子串函數

可以用assign()函數來設置字符串的元素,也可以用下標運算符[]和成員函數at()來檢索字符串中的某個字符
或修改字符串中的某個字符。
    assign()函數的主要語法如下所示:
    //將str的內容賦值給string對象
    string& assign ( const string& str ); 
    //將str的內容從pos開始取n個賦值給string對象
    string& assign ( const string& str, size_t pos, size_t n );
    //將s所指向的字符數組的前n給賦值給string對象
    string& assign ( const char* s, size_t n );
    //將s所指向的字符數組賦值給string對象
    string& assign ( const char* s );
    //將n個c字符賦值給string對象
    string& assign ( size_t n, char c );
    //假如InputIterator是int類型,該函數與string& assign ( const char* s, size_t n )功能一樣
    //如果是其他類型,則將該類型第first個開始到last結束的值賦給string對象
    template <class InputIterator>

        string& assign ( InputIterator first, InputIterator last );

    實例如下:

  1. #include <iostream>   
  2. #include <string>   
  3.   
  4. using namespace std;  
  5.   
  6. int main(int argc, char *argv[])  
  7. {  
  8.     string str;  
  9.     string base = "The quick brown fox jumps over a lazy dog.";  
  10.   
  11.     //used in the same order as described above;   
  12.     str.assign(base);  
  13.     cout << str << endl;  
  14.   
  15.     str.assign(base, 10, 9);    //"brown fox"   
  16.     cout << str << endl;  
  17.   
  18.     str.assign("pangrams are cool", 7);  
  19.     cout << str << endl;  
  20.   
  21.     str.assign("c-string");  
  22.     cout << str << endl;  
  23.   
  24.     str.assign(10, '*');  
  25.     cout << str << endl;  
  26.   
  27.     str.assign<int>(10, 0x2D);  
  28.     cout << str << endl;  
  29.   
  30.     str.assign(base.begin() + 16, base.end() - 12);  
  31.     cout << str << endl;  
  32.   
  33.         return 0;  
  34. }  

運行結果如下:

The quick brown fox jumps over a lazy dog.
brown fox
pangram
c-string
**********
----------
fox jumps over


    at()函數的語法如下所示:
    //獲取string對象第pos個的字符,並將其返回
    const char& at ( size_t pos ) const;
    char& at ( size_t pos );

    實例如下:

  1. // string::at   
  2. #include <iostream>   
  3. #include <string>   
  4.   
  5. using namespace std;  
  6.   
  7. int main ()  
  8. {  
  9.     string str ("Test string");  
  10.     for (size_t i=0; i < str.length(); i++)  
  11.     {  
  12.         cout << str.at(i);  
  13.     }  
  14.   
  15.     return 0;  
  16. }  

運行結果如下:

Test string


    substr()函數可以從一個字符串中提取並返回子串,函數的第一個參數是子串在原始字符串中的起始位置
    (計數從0開始),第二個參數是子串的字符個數。其語法如下所示
    string substr ( size_t pos = 0, size_t n = npos ) const;

   實例如下:

  1. #include <iostream>   
  2. #include <string>   
  3.   
  4. using namespace std;  
  5.   
  6. int main(int argc, char *argv[])  
  7. {  
  8.     string str = "We think in generalities, but we live in details.";  
  9.     string str1;  
  10.     string str2;  
  11.     size_t pos;  
  12.   
  13.     str1 = str.substr(12, 12);  
  14.     pos = str.find("live");  
  15.     str2 = str.substr(pos);  
  16.     cout << str1 << ' ' << str2 << endl;  
  17.   
  18.     return 0;  
  19. }  


運行結果如下:

generalities live in details.


其他函數:

begin() 該函數的功能是返回字符串第一元素的指示器

end() 該函數的功能是返回字符串最後一個元素的指示器

capacity () 該函數的功能是返回字符串的分配空間,它至少大於等於size()函數的返回值

compare() 該函數的功能是比較兩個字符串

Copyright © Linux教程網 All Rights Reserved