關於C++中字符串輸入get與getline的區別


  最近使用C++中自己老是忘記的一個點,get與getline的區別。

1、get與getline

  get和getline所屬iostream類,作用是讀取一整行,通過換行符確定讀取結束,他們都可以讀取空格。

2、get與getline區別

  getline會在讀取結束后舍棄換行符,而get回將換行符保留到輸入序列中。

 

1 char arr[100];
2 cout<<"輸入一段文字:"<<endl;
3 cin.getline(arr,20);             //使用getline
4 cin.get(arr,20);                 //使用get
5  

get與getline有兩個參數,第一個參數是用來存儲的數組名稱,第二個參數代表着讀取的字節數。

輸入:asdfg 回車

get:只讀取asdfg不讀取回車,會導致下一個讀取輸入時第一個讀取“回車”。

getline:getline讀取asdfg回車,並將回車轉換為“\0”讀取,所以最終讀取的是“asdfg\0”輸入序列中無回車,下一個讀取將會正常讀取。

3、如何解決get舍棄換行符而產生的影響

  在cin.get(arr,20)使用完后插入“cin.get()”,cin.get()不接受任何參數,為get()的一個變體,意義為讀取下一個字符(即使是換行符),用此代碼來處理被舍棄的換行符。

即:

  cin.get(arr,20);

  cin.get();

  cin.get(arr,20);

  或者可以將兩段代碼合為一段:

  cin.get(arr,20).get();

  以上。

參考資料:C++ primer plus

  


免責聲明!

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



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