一、关于输入缓冲区
你是否存在这样的疑问?当你从键盘上输入数据给一个程序时,它经历了一个什么样的过程呢?
程序运行起来要接受数据输入时——>小手指键入hello回车——>hello回车被送入到输入缓冲区——>程序就从缓冲区里读取数据,缓冲区指针来记录读取以避免重复读。
方式:一般用cin输入数据,输入时不能实现类型转换。
二、一个字符的输入
用cin、cin.get()、cin.get(char)、getchar()的区别,以下方法均可以用Ctrl+Z结束输入
- 方法一:直接用cin输入字符——在输入时,用空格间隔字符、输入回车结束时,输出会跳过空格、跳过回车,只输出字符。
- 方法二:用cin.get()输入字符——有两种形式,一种形式是无参数(方法二),另一种形式有参数(方法三);能把空格、回车当普通字符输出。用法如下:
char c; while((c=cin.get())!=EOF) cout<<c;
- 方法三:cin.get(char)输入字符
用法如下
char c; while(c))//读取一个字符变量赋值给c cout<<c;
- 方法四:用getchar()输入字符
不跳过任何字符,连Ctrl+Z也可以打印出来。用法如下:
char c; while(c=getchar())//不跳过任何字符 cout<<c;
三、一串字符的输入
- 方法一:直接用cin输入字符串
和cin输入字符不同:cin输入字符串是把空格和回车作为字符串的间隔标志
用法如下:
char str[10]; while (cin>>str) cout<<str<<endl; return 0; 输入: abc def g 回车 输出: abc def g
- 方法二:用cin.get()函数输入
有三个参数的get函数
cin.get(ch,10,'\o');//表示读取10-1个字符(包含空格),赋给指定的字符数组ch,‘\o’为指定的终止字符。
①如果读取过程中遇到终止符,则提前结束读取;如果第三个参数没有指定,则默认为'\n';
②读取成功返回非0值(真),读取失败(遇EOF)则返回0值(假)。
char ch[20]; cin.get(ch,10,'\o'); cout<<ch<<endl;
- 方法三:用cin.getline()函数输入
原理方法如上述方法二,
cin.getline()与cin.get()有一点区别:
①cin.getline()遇到终止标志字符时结束,缓冲区指针移到终止标志字符之后;
②cin.get()遇到终止字符是停止读取,缓冲区指针不移动。
注:以上为视频课的学习总结笔记,如有不正确欢迎指正。