C++中string和char字符串的異同與使用方法


C++中string和char聲明字符串的異同和使用

  • string類
    • 必須在頭文件中包含<string>
    • 隱藏了字符串的數組性質,可以像處理普通變量那樣處理字符串
    • string類位於名稱空間std中
    • string是一個類,創建出的是一個對象

操作(賦值,拼接,附加)

  • 不能將一個數組賦給另一個數組,但可以將一個string對象賦給另一個string對象
char charr1[20];
char charr2[20] = "jaguar";
charr1 = charr2;//此操作不合法(相當於兩個首地址的賦值操作)
string str1;
string str2 = "panther";
str1 = str2;//此操作合法
  • 可以使用連接運算符"+"將兩個string對象合並起來,還可以用"+="將字符串附加到string對象的末尾
    • 此處的加號起連接作用,不是做加法的作用
    • "+"在第一次碰到string對象之后起連接作用,之前作數字間的加法
string str3;
str3 = str1 + str2;//str3是 str1的內容后緊跟str2的內容 的合並數組。
//對應char字符串的strcpy(charr3,charr1);strcat(charr3,charr2);
str1 += str2;//str1后緊跟str2的內容
  • 確定兩種字符串中字符數的方法
    • char類型字符串可用頭文件<cstring>中的strlen(字符串名)函數,該函數返回該字符串包含的字符數,不包含'\0'
    • string創建的對象可以用對象名.size()來確定。
      • string str;,str是一個string對象,size()是string類的一個方法,方法是一個函數

輸入輸出 I/O

  • string字符串在未被初始化前長度被自動設置為0,而char類型的字符串第一個'\0'出現的位置是不確定的,因此,strlen()獲取的長度不確定,甚至可以大於中括號中給定的長度

  • 可以用cin>>來講輸入存儲到string對象中

  • 可以使用cout<<來顯示string對象

  • 每次讀取一行而不是一個單詞時使用的句法不同

  • 讀入

    • 將一行輸入讀入數組:cin.getline(字符數組名,數組長度)

      這個getline()為istream類中的一個類方法,使用第二個參數避免超過數組的長度

    • 將一行輸入讀取到string對象中:getline(cin,string創建的對象名)

      可見,這個getline()沒有句點,表明這個getline()不是類方法,它將cin作為參數,指出到哪里去查找輸入,另外,也沒有指出字符串長度的參數,因為string對象將根據字符串的長度自己調整自己的大小

      istream類中,有處理double,int,和其他基本元素的類方法,但沒有處理string對象的類方法

    • cin>>輸入一個string對象可行是因為使用string類的一個友元函數


免責聲明!

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



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