当前位置: 首页 > news >正文

cin-getline缓存区

更多资源请关注纽扣编程微信公众号
在这里插入图片描述

cin.sync()清除缓存区

如果需要输入如下内容

3

This is C++ language.

This is JAVA language.

This is Python language.

写如下程序

#include<bits/stdc++.h>
using namespace std;
string str[100];
int main(){int n;cin>>n;for(int i=0;i<n;i++){getline(cin,str[i]);cout<<str[i]<<endl;}
}

输出如下结果:
在这里插入图片描述
发现最后一行This is Python language. 没有被getline函数输入。

原因是:

cin>>n

原因是cin>>的结束符,回车,或者空格都可以,但是当cin读取结束后,cin的结束符还会再缓冲区中存在,并让下次需要读取时进行读取

getline是从缓冲区读取一条,因此第一次循环getline是读取cin换行的缓存区数据

解决方法:

1.在cin后面加入cin.sync()清空缓冲区,getline开始读取

2.在cin后面getline把缓存区数据取出

cin与getline()的区别

cin的结束符,结束后,结束符还在缓存区,scanf同cin

getline()中的结束符,结束后,结束符不放入缓存区

http://www.lryc.cn/news/354983.html

相关文章:

  • 牛客前端面试高频八股总结(1)(附文档)
  • 韦专家:广告投放方式和内容运营底层方法论逻辑上有什么关系?
  • 003 ++ --
  • DDR、LPDDR和GDDR的区别
  • 【附代码】@hydra.main 没有返回值,如何解决函数返回?
  • js深入理解对象的 属性(properties)的特殊 特性(attributes)
  • 【MATLAB】去除趋势项(解决频谱图大部分为零的问题)
  • jmeter发送webserver请求和上传请求
  • 如何看centos 有没有安装x11
  • 超详细的前后端实战项目(Spring系列加上vue3)前后端篇(四)(一步步实现+源码)
  • 决策树|随机森林 GBDT XGBoost|集成学习
  • 【C语言实现TCP通信】
  • 黑马点评-短信登录
  • CentOS7 部署单机版 elasticsearch
  • Mujoco仿真【xml文件的学习 4】
  • vue数据持久化仓库
  • OrangePi AIpro评测 - 基础操作篇
  • 不含一阶导数项的线性二阶微分方程的通解
  • Redis篇 String
  • 【vue-2】v-on、v-show、v-if及按键修饰符
  • 华为交换机基础实验----VLAN基础
  • Vue3学习使用axios和qs进行POST请求和响应处理
  • 张大哥笔记:赚钱高手养成计划---如何将一份时间产生N份收入?
  • excel里如何将数据分组转置?
  • WHAT - 前端安全性测试和常见攻击手段
  • 重量and体积,不要在傻傻的花冤枉钱寄快递了!
  • docker ps显示的参数具体是什么意思
  • 【C++】多态:编程中的“一人千面”艺术
  • 【必备工具】gitee上传-保姆级教程
  • P1115 最长子段和