缓冲区 cin() getline() getchar()
程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入
一. cin>>
该操作符是根据后面变量的类型读取数据。
输入结束条件 :遇到Enter、Space、Tab键。
对结束符的处理 :将\n类似的结束符落在缓冲区里.
所以会有如下的程序和结果:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1,s2;
cin>>s1;
getline(cin,s2);
cout<<s1<<endl;
cout<<s2<<endl;
return 0;
}
只输入了一行abc, 然后回车后就输出一行abc, 一行空
这是因为cin在缓冲区里丢下的\n 给后面的getline()当成输入结束的标志了
二.getline(cin, str)
输入结束条件:Enter键
对结束符处理:将\n结束符从缓冲区里清除.
所以会有如下的程序
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1,s2;
getline(cin,s1);
getline(cin,s2);
cout<<s1<<endl;
cout<<s2<<endl;
return 0;
}
如果在输入完abc后, 按两次回车, 就会有如下结果
三.getchar()
清除缓冲区里的\n , 建议用getchar(), 这种方式最方便.
四. 例子
先输入一个整数到变量n里 ,然后读入n行字符串, 注意用getchar()消除\n
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
string s1;
cin>>n;
getchar();
while(n--){
getline(cin, s1);
}
//process these strings
return 0;
}
缓冲区 cin() getline() getchar()的更多相关文章
- c++中 cin、cin.get()、cin.getline()、cin.getchar()的区别
①cin>>:无法接收空格.Tap键且以空格.Tap键.回车符为分隔符: ②cin.get( ):可以接收空格.Tap键且以回车符为结束符: 一:可输入单个字符 格式: char ch; ...
- [原创]cin、cin.get()、cin.getline()、getline()、gets()、getchar()的区别
这几个输入函数经常搞不清具体特点和用法,这里稍作总结 一.cin>> 1.最基本用法,输入一个变量值 2.输入字符串,遇“空格”.“TAB”.“回车”结束,比如输入“hello world ...
- C++语言中cin cin.getline cin.get getline gets getchar 的用法实例
#include <iostream> #include <string> using namespace std; //关于cin cin.getline cin.get g ...
- C++中几个输入函数的用法和区别(cin、cin.get()、cin.getline()、getline()、gets()、getchar())
1.cin>> 用法1:最基本,也是最常用的用法,输入一个数字: #include <iostream>using namespace std;main (){int a,b; ...
- getchar()、putchar()、gets()、puts()、cin.get()、cin.getline()、getline()
1.getchar: 原型为int getchar(void). 它从stdin里读取一个字符.返回值为用户输入的ASCⅡ码,出错返回-1. eg:c=getchar(). 2.putchar: 原型 ...
- cin.get(),cin.getline(),getline(),gets(),getchar()
1.cin.get() (1).cin.get()-------提取单个字符,可以提取回车.空格 a=cin.get(); (2) 同(1)---------------提取单个字符,可以提取回车.空 ...
- cin,cin.get(),cin.getline(),gets(),getchar()函数的用法
1.cin>> 用法a:最基本的流输入用法,接受一个数字或字符,自动跳过输入的空格. 用法b:接受一个字符串,但是遇到除开头外的空格则会终止输入. #include<iostream ...
- 关于cin, cin.get(), getchar(),getline()的字符问题
一.getchar()和cin.get() getchar()会将开头的空格或者回车作为输入 1 #include<iostream> 2 using namespace std; 3 i ...
- (转)cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息:1.cin1 ...
随机推荐
- css常用代码大全
css常用代码大全,html+css代码 html+css可以很方便的进行网页的排版布局,还能减少很多不必要的代码. 一.文本设置1.font-size: 字号参数 2.font-style: 字体格 ...
- ABAP-JCO服务端连接问题
公司网络服务加域,若SAP服务器后端未配置端口号映射,则外部服务器注册JCO服务监听需要调整 # server jco.server.connection_count=5 jco.server.gwh ...
- Python 简单web服务器的实现
import re import socket def service_cilent(new_socket): request = new_socket.recv(1024).decode(" ...
- stm32内联汇编
首先,先看一下mdk下的混合编程的基本方法: 使用如上方法就可以进行混合编程了. 但是要特殊注意一点,个人感觉这个是直接调用一个代码段,并非一个函数,因为他不会保护调用这个代码段之前的现场.比如: 在 ...
- MVC-Application
Application简述(不如Cache) 在asp.net环境下,Application对象来自HttpApplictionStat类.它可以在多个请求.连接之间共享公用信息,也可以在各个请求连接 ...
- Android 通过资源名,获取资源ID
有时候我们知道一个图片的文件名,我们需要知道在R文件中,该资源的ID,使用如下方法: public static int getIdByName(Context context, String cla ...
- 学习使用Django2 前台页面展示
Django 2.1 python 3.7 创建一个虚拟环境 python -m venv 虚拟环境名称 进入虚拟环境 下载django pip install django==2.1 创 ...
- 科大讯飞语音识别Demo创建
1.下载官方SDK https://www.xfyun.cn/sdk/dispatcher 2.打开AS,选择import project 3.导入mscV5PlusDemo 4.解决ERROR: ...
- java相关网址汇总2
分享几个高质量的技术博客和网站. 一.博客 0.酷壳 - COOLSHELL 博客地址是 https://coolshell.cn/. 这个博客的作者是技术圈基本无人不知的技术大牛,江湖人称耗子叔,网 ...
- MyBatis3_[tp_38~]_动态sql_if_判断&OGNL_where标签_
笔记要点出错分析与总结 /** 笔记: * 查询的时候,如果某些条件,没带可能SQL拼装会有问题; * 1.-->给where 后面加上 1=1, 以后的条件都and XXX * 2. < ...