close
cin.getline()与 cin.get(array_name,Arsize)的读取方式差不多,以Enter结束,可以接受空格
字符。按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。
但是这两个函数是有区别的:
cin.get(array_name, Arsize)当输入的字符串超长时,不会引起下一個cin函数輸入的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。且不会丢弃最后的Enter字符。
但是cin.getline()当输入超长时,会引起下一個cin函数輸入的错误,后面的cin操作将不再执行。
int main ()
{
char ch, a[20];
cin.getline(a,5);
cin >> ch;
cout << a << endl;
cout << (int)ch << endl;
return0;
}
输入:
输出:
12345
↙
1234
-52
【分析】与
cin.get(array_name,Arsize)
的例程比较会发现,这里的
ch
并没有读取缓冲区中的
5
,而是返
回了
-52
,这里其实
cin>>ch
语句没有执行,是因为
cin
出错了!
输入:
输出:
12345
↙
1234
-52
【分析】与
cin.get(array_name,Arsize)
的例程比较会发现,这里的
ch
并没有读取缓冲区中的
5
,而是返
回了
-52
,这里其实
cin>>ch
语句没有执行,是因为
cin
出错了!
测试: 输入: 输出:
12345↙ 1234
-52
【分析】与cin.get(array_name,Arsize)的例程比较会发现,这里的ch并没有读取缓冲区中的5,而是返回了-52,这里其实cin>>ch语句没有执行,是因为cin出错了!
全站熱搜