作者freexq (快樂蕃茄)
看板C_and_CPP
標題[問題] cin.get()與cin.getline()有什麼不同?
時間Thu Nov 16 21:06:15 2017
請問cin.get()與cin.getline()有什麼不同?
我查書上是寫
get(str,MAX,DELIM)
用途:擷取字元到陣列 str 中,直到已經擷取了 MAX 個字元或分隔字元
出現為止,分隔字元會留在資料流中。
getline(str,MAX,DELIM)
用途:擷取字元到陣列 str 中,直到已經擷取了 MAX 個字元或分隔字元
出現為止,而且會擷取分隔字元。
什麼時後該用 cin.get()
什麼時後該用 cin.getline() 呢...?
寫了個小程式來測試一下
#include <iostream>
using namespace std;
int main()
{
char a[20],b[20];
/* 執行ok
cin.getline(b,20);
cout<<b<<endl;
cin.get(a,20);
cout<<a<<endl;
*/
//會有問題
cin.get(a,20);
cout<<a<<endl;//以下被吃掉
cin.getline(b,20);
cout<<b<<endl;
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.224.171.19
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1510837578.A.C8A.html
→ longlongint: 讀到分隔字元就停囉 11/16 22:30
→ uranusjr: 就跟書上寫的一樣啊, get 讀到換行停, 不拿走換行本身 11/17 00:04
→ uranusjr: 第二個例子 get 看到換行停下, getline 讀到的第一個字 11/17 00:04
→ uranusjr: 元就是被留下的換行, 就把換行拿走收工, 得到看到的結果 11/17 00:05
→ freexq: getline的使用很好懂,但是不知道什麼時候才會用到get? 11/17 07:40
推 peterwu4: get的泛用性蠻高的,最簡單的理解應該是 11/17 10:06
→ peterwu4: char c = std::cin.get(); XD 11/17 10:07
→ MOONRAKER: .get()不是底層method 沒事不要用嗎 11/18 04:20