c++string標准輸入和getline()整行讀入


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 }

 歡迎評論!


免責聲明!

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



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