各种输入方法总结(C++)

为了避免反复造轮子,我就当一回牛顿(站在dalao的肩膀上),把他们已经做好的高质量轮子打包到这篇博客里

👇查看 cin、cin.get( )、cin.getline( )、getline( )、gets( )

查看博客:
C++基础:各种输入方法总结,cin、cin.get()、cin.getline()、getline()、gets()、getchar()

👇查看 getchar( )、getch( )

查看博客:
C++中cin.get(),cin.getLine(),getChar(),getch()的区别

👇查看 cin.peek()

查看博客:
cin.get()与cin.peek()的使用

下面是我整理过后的做出的补充 (正文是上面的博客) ~~( ﹁ ﹁ ) ~~~


输入原理简述:

程序的输入都建有一个缓冲区,即输入缓冲区。每次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入

比如下面的例子:

void test_input()
{
	string str;
	cout<<"cin的测试:"<<endl;
	cin>>str;
	cout<<str<<endl;
	cin>>str;
	cout<<str<<endl;
}

在这里插入图片描述

1、cin

根据cin>>sth 中sth的变量类型读取数据,这里变量类型可以为int,float,char,char*,string等诸多类型。这一输入操作,在遇到结束符(Space、Tab、Enter)就结束,且对于结束符,并不保存到sth中

string array;
cin>>array;
cout<<array;
char array[10];
cin>>array;
cout<<array;

都是:
在这里插入图片描述
补充: 当想为三个变量赋值时,cin>>a,b,c 不行,必须要cin>>a>>b>>c

2、cin.get()

cin.get()与 cin 的区别
cin.get()操作遇到结束符停止读取,但并不会将结束符从缓冲区丢弃

cin.get(a,3)在不遇到结束符的情况下,最多可往 a 中接收 3 - 1 = 2 个字符
cin.get()也可以充当清理缓冲区的工具,如:

char a[10],b[10];
cin.get(a,3);
cin.get();
cin.get(b,3);
cout<<a<<endl;
cout<<b;

在这里插入图片描述

3、cin.getline()

cin.getline()与 cin.get()的区别
cin.getline()当输入超长时,会引起 有关cin函数 的错误,后面的 有关cin 操作将不再执行,如:

char a[10],b[10];
cin.getline(a,3);
cin.get(b,3);
cout<<a<<b<<endl;

在这里插入图片描述

4、getline()

记住前面加入头文件 #include < string >,还有第二个参数为string类型

5、gets()

只有一个参数,且参数为 char* 类型

6、getchar()

getchar()有一个int型的返回值,getchar()函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1

当然,getchar()也可以充当清理缓冲区的工具(就不演示了)

7、getch()

这个很特殊,要加头文件 #include < conio.h >,而且getch()与前面所有的区别是:
直接从键盘获取键值,不等待用户按回车

其余的和功能与 getchar()类似

8、cin.peek()

cin.get()与 cin.peek()的区别就是后者只能接收并返回 char 型字符,且后者只看字符,不取走


如有问题请及时在评论区反馈,若还想看有关于 C语言 的输入、输出方法总结,传送门在此

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值