最近使用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回車,並將回車轉換為“ ”讀取,所以最終讀取的是“asdfg ”輸入序列中無回車,下一個讀取將會正常讀取。
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