#include<iostream>
using namespace std;
void main()
{
char c,a[50],s1[100];
cout<<"input your c:"<<endl;
while((c=cin.get())!='\n')
cout<<c<<" ";
cout<<endl;
cout<<"input your a[50] :"<<endl;
cin.get(a,5);
cout<<a<<endl;
cin.ignore(1); //若没有,则下面的getline不能够从键盘读取char值
cout<<"use getline for getting s1[100] :"<<endl; //只要a【50】输入5个以内,getline都能从键盘取字符,否则不会
cin.getline(s1,90);
cout<<s1<<endl;
using namespace std;
void main()
{
char c,a[50],s1[100];
cout<<"input your c:"<<endl;
while((c=cin.get())!='\n')
cout<<c<<" ";
cout<<endl;
cout<<"input your a[50] :"<<endl;
cin.get(a,5);
cout<<a<<endl;
cin.ignore(1); //若没有,则下面的getline不能够从键盘读取char值
cout<<"use getline for getting s1[100] :"<<endl; //只要a【50】输入5个以内,getline都能从键盘取字符,否则不会
cin.getline(s1,90);
cout<<s1<<endl;
}
原因分析:由于get()函数有些不安全,他遇到结束符以后,不会将 \n 从输入流删除,从而导致getline一开始就读取了 \n,直接结束了
只要cin.get(a,5);的输入char少于或者=5个时,通过cin.ignore(1); 将get()遗留的 \n删除,就可以读取数据了。
所以:getline和get效果差不多,但是getline()安全方便一点