C++随笔(1)

本次是在记录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()

待续、、、、、、

发布了38 篇原创文章 · 获赞 15 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u013057271/article/details/39805099