本次是在记录cin.ignore() ; cin.getline(); cin.get() ; cin.peek() ; cin.gcount() ; cin.read() ; 的用法和实现的啥玩意的功能。
一、cin.ignore()——
(一)数字方面:忽略在空格后的 多少 字符。
#include<iostream>
using namespace std;
void main()
{
int a, b, c;
cout<<"输入第一个数a:"<<endl;
cin>>a;
cin.ignore(3, '\n');//第一个数是忽略的个数(这里是3个字符)
cout<<"输入第二个数b:"<<endl;
cin>>b;
cin.ignore(3, '\n');
cout<<"输入第三个数c:"<<endl;
cin>>c;
cout<<a<<endl<<b<<endl<<c<<endl;
}
结果展示:(1)正常
(2)超出3个忽略字符
(3)注释掉 cin.ignore()
注:如果cin.ignore()不给参数,则默认参数为cin.ignore(1,EOF),即把EOF前的1个字符清掉,没有遇到EOF就清掉一个字符然后结束,会导致不正确的结果。
(二)字符
#include<iostream>
using namespace std;
void main()
{
char s1[30], s2[30], s3[30];
cout<<"输入姓名:"<<endl;
cin>>s1;
cout<<"输入地址:"<<endl;
cin.ignore();
cin.getline(s2, 30, 'a');
cout<<"输入籍贯:"<<endl;
cin.ignore();
cin.getline(s3, 30);
cout<<s3<<endl;
}
示例:
注:如果在地址那里输入bcdabcd那么此时流里面剩的是bcd\n,此时cin.ignore();吃掉的就是b了,这是流里还剩下cd\n直接交给cin.getline(str3,30);应为有个\n所以这里getline就直接返回。
二、cin.getline()
#include <iostream>
using namespace std;
char fname[5];
char lname[5];
char grade;//一个字符
int age;
int main()
{
cout<<"What is your first name?"<<endl;
cin.getline(fname,5);//最大为5
cout<<"What is your last name?"<<endl;
cin.getline(lname,5);
cout<<"What letter grade do you deserve?"<<endl;
cin>>grade;//输入一个字符
cout<<"What is your age?"<<endl;
cin>>age;
cout<<"Name:"<<lname<<","<<fname<<endl<<"Grade:"<<grade<<endl<<"Age:"<<age<<endl;
system("pause");
return(0);
}
示例:(1)正确
(2)错误
注:cin.getline(char ch[],size)是cin 的一个成员函数,定义在<iostream>中,用于输入行指定size的字符串,以enter结束。若输入长度超出size,则不再接受后续的输入。
三、cin.get()
(1)单一字符
#include <iostream>
using namespace std;
void main()
{
char ch;
cout<<"输入字符"<<endl;
cin.get(ch);
cout<<ch<<endl;
}
结果:
(2)数组
#include <iostream>
using namespace std;
void main ()
{
char a[20];
cout<<"输入数组:"<<endl;
cin.get(a,20);
cout<<a<<endl;
}
结果:正确
错误:
四、cin.peek()
待续、、、、、、