作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1510837578.A.C8A.html
1F:→ longlongint: 读到分隔字元就停罗 11/16 22:30
2F:→ uranusjr: 就跟书上写的一样啊, get 读到换行停, 不拿走换行本身 11/17 00:04
3F:→ uranusjr: 第二个例子 get 看到换行停下, getline 读到的第一个字 11/17 00:04
4F:→ uranusjr: 元就是被留下的换行, 就把换行拿走收工, 得到看到的结果 11/17 00:05
5F:→ freexq: getline的使用很好懂,但是不知道什麽时候才会用到get? 11/17 07:40
6F:推 peterwu4: get的泛用性蛮高的,最简单的理解应该是 11/17 10:06
7F:→ peterwu4: char c = std::cin.get(); XD 11/17 10:07
8F:→ MOONRAKER: .get()不是底层method 没事不要用吗 11/18 04:20