C++ Primer-------string

前提:閱讀C++ Primer 第五版筆記

string類型表示可變長的字符序列。

頭文件:<string>
命名空間:std::string

  1. 定義和初始化string對象
string s1;				//默認初始化,直接構造,s1是空字符串
string s2=s1;     //s2是s1的副本,調用拷貝構造函數
string s2(s1);      //直接構造
string s3="hi"    //拷貝初始化
string s3("hi");        //直接構造
string s4(10,'c');    //直接構造  s4內容是'cccccccccc'
string s4=string(10,'c');//拷貝構造
  1. 賦值

s1=s2;

  1. 讀寫string對象
string s;
cin>>s;				//將string對象讀入s,遇到空白停止
cout<<s<<endl;  //輸出s

string對象會自動忽略開頭的空白(空格符,換行符,製表符等)並從第一個真正字符開始讀取,直到下一個空白。
4. 使用getline讀取一整行

getline(cin,string)   

函數從cin輸入流中讀入內容,直到遇到換行符(換行符也被讀取),然後將內容存入string對象中(不存換行符)。如果第一個字符就是換行符,則結果爲空字符串。
5. emptysize

s.empty() ;   // 若s爲空,則返回true,否則返回false

size成員函數
size()返回的是一個無符號整型,size_type因此在大小對比時,應使用無符號整型數據類型。
用法:

s.size(); //返回s的長度

例如:

int n=-1;
if(s.size()<n);//由於負整數會自動轉換成無符號整型,也就是一個很大的值,所以該語句幾乎都爲`true`

  1. 比較string對象
    規則:
    1. 若兩個string對象長度不同,且兩個string對象相應位置的字符相同,則較短的對象小於較長對象。
    2. 對比兩個string對象中相應位置第一個不同的字符,就是比較結果。

  2. 字符串或字符與string相加
    標準庫允許把字符串或字符轉換成string對象,所以需要string對象的地方可用這兩個類型代替。
    注意:當把string對象和字符、字符串類型混在一條語句使用時,必須確保加法運算符兩個運算對象至少有一個是string。

string s1=s+",";  //正確
string s2=s1+'c'+"c";  //正確,因爲string(s1+'c')返回一個string然後+“c”
string s3="he"+","+s2;  //錯誤,因爲前兩個先運算,都是字符串
  1. 迭代string對象內元素
    方法1(c++11):使用for語句
for(declaration: expression)
	statement

其中,expression是一個對象,表示一個容器類型,包括string。declaration負責定義一個變量,該變量將被用於訪問容器內的元素。每次迭代,其內容都會初始化爲下一個元素內容。

string s("some");
for(auto c:s)
	cout<<c<<endl;     //將string  s中的元素遍歷,並輸出

若需要改變元素值,則必須把循環變量定義成引用類型

string s("some");
for(auto &c:s)
	c=toupper(c);  //將s中的每個元素變成大寫

方法2:使用下標

if(!s.empty())
	cout<<s[0];  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章