c++ string類型相關操作


 

1. 定義和初始化string對象

  • string s;  

默認初始化,s是一個空字符串。

  • string s = “hello”;  或者string s(“hello”); 或者string s2(10, s1)拷貝s1的前10個字符到s2中。

s的內容是  “hello”

  • s.empty( ) 為空返回true。
  • s.size()返回字符個數。
    • 返回值是string::size_type類型的值,size_type屬於unsigned類型,能夠存放下任何string對象的大小,一般用unsigned,或者auto來保存。
  • s1+s2 相加,相連,  s1=s2 賦值,  s1==s2 判斷相同,s1!=s2 判斷不同,>,< 按字典順序判斷大小
    • 相加時,只能一個string類型和一個字面值相加,或者兩個string類型對象相加,不能兩個字面值相加,編譯器無法識別。(字面值與string對象不是同一類型)
    • string s = “abc”+“def”;//錯誤的

2. 讀取string對象

       IO操作

cin>>s;  以空白為結束。因此如果輸入hello world只能讀入hello。可以cin>>s1>>s2; 輸入兩個。

讀取未知數量的string對象,可以用:

       string s;
       while(cin >> s){
             //處理s       
       }

  使用getline讀取一整行(可以保留空格),getline函數的參數是一個輸入流和一個string對象,直到遇到換行符。

while(getline(cin,s)){
     //處理s
}

3. 處理string對象

  • for循環處理:
for(auto c:s){ //實際上c是char類型
     //處理c
}

 

for(auto &c:s){
     c = toupper(c);  //c是一個引用,因此賦值語句可以改變s的值
}

  

  或者使用下標運算符[ ] , 下標運算符接收的是unsighed類型的值。s[0],s[1]返回值是該位置上字符的引用,

  • 關於大小寫和數字的常用方法:

           isalpha(c) 字符是字母;isdigit(c)是數字;islower(c)是小寫字母;isupper(c)是大寫字母;isspace是空格;

           toupper( c ) 轉為大寫字母;tolower(c)轉為小寫字母; 

   4. 搜索string

  •  find函數,若找到,返回第一個匹配到的下標(string::size_type類型),

                            否則返回npos(npos是一個string::size_type類型, 並初始化為-1,表示任何string最大的可能大小)

  string s(“hello”);

  auto p = s.find("world"); //p這是=nops

  • 其他的find函數

           s.rfind(args) 找到s中最后一次出現args的位置

           s.find_first_of (args) 找到s中第一次出現args任何字符的位置

   s.find_last_of (args) 找到s中最后一次出現args任何字符的位置

   s.find_first_not_of (args) 找到s中第一次出現不屬於args任何字符的位置

   s.find_last_not_of (args) 找到s中最后一次出現不屬於args任何字符的位置

(args中可以加上特定位置類似(c,pos),用來指定從哪里開始搜索)

          eg: unsigned pos;

                   pos = s.find_first_of ( s1 );

                    if(pos!=nops){  // s中有s1中的字符 }

  •   substr()方法,給出位置,返回子串

              string s1 = s.substr(i);返回從i位置開始的子串

5. 數值轉換

     int i=123;

     string s = to_string(i);    整數轉換為string

     int i std::stoi (s,nullptr,16); 按16進制轉,默認為10

     double d = stod(s); 字符串轉浮點數

6. 獲取字符串的長度

     int len = s.length()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM