为了避免反复造轮子,我就当一回牛顿(站在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语言 的输入、输出方法总结,传送门在此