cin.get(array_name, Arsize)是用来读取字符串的,可以接受空格字符,遇到Enter结束输入,按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。程序6:
using namespacestd;
int main ()
{
char a[20];
cin.get(a, 10);
cout<<a<<endl;
return 0;
}
测试一输入: abc def[Enter] 输出: abc def 【分析】说明该函数输入字符串时可以接受空格。 测试二输入: 1234567890[Enter] 输出: 123456789 【分析】输入超长,则按需要的长度取数据。
using namespacestd;
int main (){
char ch, a[20];
cin.get(a, 5);
cin>>ch;
cout<<a<<endl;
cout<<(int)ch<<endl;
return 0;
}
测试一输入:12345[Enter]输出:123453【分析】第一次输入超长,字符串按长度取了"1234",而'5'仍残留在缓冲区中,所以第二次输入字符没有从键盘读入,而是直接取了'5',所以打印的ASCII值是53('5'的ASCII值)。 测试二输入:1234[Enter]a[Enter]输出:123497【分析】第二次输入有效,说明该函数把第一次输入后的Enter丢弃了!
二、cin.getline()
cin.getline()与 cin.get(array_name,Arsize)的读取方式差不多,以Enter结束,可以接受空格字符。按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。但是这两个函数是有区别的:cin.get(array_name, Arsize)当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。但是cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。
#include <iostream>
using namespace std;
int main (){
charch, a[20];
cin.getline(a,5);
cin>>ch;
cout<<a<<endl;
cout<<(int)ch<<endl;
return0;
}
测试输入:
12345[Enter]
输出:
1234-52
【分析】与cin.get(array_name,Arsize)的例程比较会发现,这里的ch并没有读取缓冲区中的5,而是返回了-52,这里其实cin>>ch语句没有执行,是因为cin出错了!