最近使用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