1、使用標准IO操作讀寫string對象
我們都知道,使用標准iostream操作來讀寫int ,double等內置類型的值,同樣,我們也可以使用IO操作來讀寫string對象。
c++ code:
1 #include<iostream>
2 #include<string>
3 using namespace std; 4 int main() 5 { 6 string s; 7 cin >> s;//從輸入流中讀取字符序列到對象s
8 cout << s << endl;//輸出對象s
9 system("pause"); 10 return 0; 11 }
這段程序首先定義了一個空的string對象,然后將標准輸入找中的內容讀取到對象s中,具體實現:在執行讀取操作的時候,string對象會自動忽略開頭的空白(如空格符、換行符、制表符等),並從第一個真正的字符開始讀入,知道遇到下一個空白字符為止。因此,使用cin>>只能從標准輸入中讀取單個詞。
如上所述,如果輸入的是" hello word! "(注意開頭和結尾以及中間是空格),則輸出的是hello。
2、使用getline()讀取一行
有時候我們希望在最終的字符串中保留輸入時的空白符,這時候應該用getline函數來替代原來的>>運算符。getline函數的參數是一個輸入流和一個string對象,原型是:getline(cin,string對象),函數從給定的輸入流中讀入內容,直到遇到換行符為止,但是此時的換行符要被讀入,然后把所讀入的內容存到string對象中,但此時不存入最后那個換行符。getline只要遇到換行符就停止讀入並且返回string對象,哪怕一開始輸入就是換行符也是如此,只不過會返回一個空的string對象。和輸入運算符一樣,getline也會返回它的流參數,所以可以用getline的結果作為條件。
c++ code:
1 #include<iostream>
2 #include<string>
3 using namespace std; 4 int main() 5 { 6 string line;//每次讀入一整行,知道遇到換行符結束讀入
7 while (getline(cin,line)) 8 if (!line.empty()) 9 cout << line << endl; 10 system("pause"); 11 return 0; 12 }
歡迎評論!