前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >清除 C\u002FC++ 中的输入缓冲区

清除 C\u002FC++ 中的输入缓冲区

作者头像
鲸落c
发布于 2022-11-14 08:41:34
发布于 2022-11-14 08:41:34
94300
代码可运行
举报
文章被收录于专栏:鲸落学习笔记鲸落学习笔记
运行总次数:0
代码可运行

theme: channing-cyan highlight: a11y-dark


「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战

什么是缓冲区? 临时存储区称为缓冲区。所有标准输入和输出设备都包含一个输入和输出缓冲区。在标准 C/C++ 中,流被缓冲,例如在标准输入的情况下,当我们按下键盘上的键时,它不会发送到您的程序,而是由操作系统缓冲直到时间分配到那个程序。

它如何影响编程? 在各种情况下,您可能需要清除不需要的缓冲区,以便在所需容器中而不是在前一个变量的缓冲区中获取下一个输入。比如C遇到“scanf()”后,如果需要输入字符数组或字符,而C++遇到“cin”语句后,需要输入字符数组或一个字符串,我们需要清除输入缓冲区,否则所需的输入被前一个变量的缓冲区占用,而不是被所需的容器占用。在第一次输入后在输出屏幕上按“Enter”(回车)时,由于前一个变量的缓冲区是新容器的空间(因为我们没有清除它),程序会跳过下面的输入容器。

从那些“Hello World”程序中升级。学习实现堆、堆栈、链表等数据结构!查看我们的**C 数据结构**课程,立即开始学习。

在C的情况下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
int main()
{
    char str[80], ch;
    scanf("%s", str);
    ch = getchar();
    printf("%s\n", str);
    printf("%c", ch);	
    return 0;
}

输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Haiyong
a

输出: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Haiyong

在C++的情况下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<vector>
using namespace std;

int main()
{
    int a;
    char ch[80];
    cin >> a;
    cin.getline(ch,80);
    cout << a << endl;
    cout << ch << endl;
    return 0;
}

输入: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4 
Haiyong

输出: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4

在上面的两个代码中,输出都没有按需要打印。这样做的原因是一个被占用的缓冲区。“\n”字符留在缓冲区中,并作为下一个输入读取。

如何解决?

在C的情况下:

1. 使用“ while ((getchar()) != '\n'); ”  : 输入“while ((getchar()) != '\n');” 读取缓冲区字符直到结束并丢弃它们(包括换行符)并在“scanf()”语句清除输入缓冲区并允许在所需容器中输入后使用它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>

int main()
{
    char str[80], ch;
    scanf("%s", str);
    while ((getchar()) != '\n');
    ch = getchar();
    printf("%s\n", str);
    printf("%c", ch);

    return 0;
}

输入: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Haiyong 
a

输出: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Haiyong 
a

2. 使用“ fflush(stdin) ” :在“scanf()”语句之后输入“fflush(stdin)”也会清除输入缓冲区,但避免使用它,根据C,输入流被称为“未定义” ++11 标准。

在C++的情况下:

1. 使用“cin.ignore(numeric_limits::max(),'\n'); ”  :- 输入“cin.ignore(numeric_limits::max(),'\n');” 在“cin”语句丢弃输入流中的所有内容之后,包括换行符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<ios>	
#include<limits>
using namespace std;

int main()
{
    int a;
    char str[80];
    cin >> a;
    cin.ignore(numeric_limits<streamsize>::max(),'\n');
    cin.getline(str, 80);
    cout << a << endl;
    cout << str << endl;
    return 0;
}

输入: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4 
Haiyong

输出: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4 
Haiyong

2. 使用“cin.sync()”: 在“cin”语句之后输入“cin.sync()”会丢弃缓冲区中剩余的所有内容。尽管“cin.sync()”并不适用于所有实现(根据 C++11 及以上标准)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<ios>	
#include<limits>
using namespace std;

int main()
{
    int a;
    char str[80];
    cin >> a;
    cin.sync();
    cin.getline(str, 80);
    cout << a << endl;
    cout << str << endl;
    return 0;
}

输入: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4 
Haiyong

输出: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4

3. 使用“cin >> ws”: 在“cin”语句后输入“cin>>ws”告诉编译器忽略缓冲区并丢弃字符串或字符数组实际内容之前的所有空格。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<vector>
using namespace std;

int main()
{
    int a;
    string s;
    cin >> a;
    cin >> ws;
    getline(cin, s);
    cout << a << endl;
    cout << s << endl;
    return 0;
}

输入: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4 
Haiyong

输出: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4 
Haiyong
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
YOLO界再起波澜!mAP 51.4,149FPS,目标检测,一个就够了
机器之心发布 作者:百度飞桨团队 百度飞桨团队发布了 PP-YOLOE,与其他 YOLO 系列算法相比,其具有更强的性能、更丰富灵活的配置方案以及更全硬件支持三大优势。 此前,机器之心报道过的 PaddleDetection 项目再次升级,发布了全新进化版 YOLO 模型——PP-YOLOE,并再次以极佳的性能表现刷新业界性能榜单指标,在目标检测领域引起了广泛关注。  论文地址:https://arxiv.org/abs/2203.16250 项目地址:https://github.com/PaddleP
机器之心
2022/05/17
1K0
YOLO界再起波澜!mAP 51.4,149FPS,目标检测,一个就够了
Yes, PP-YOLOE!80.73mAP、38.5mAP,旋转框、小目标检测能力双SOTA!
上个月,百度飞桨团队开源了其最新SOTA通用检测模型——PP-YOLOE+,COCO数据集精度达54.7mAP,其l版本相比YOLOv7精度提升1.9%,V100端到端(包含前后处理)推理速度达42.2FPS,文章回顾请戳:
用户1386409
2022/11/29
1.6K0
Yes, PP-YOLOE!80.73mAP、38.5mAP,旋转框、小目标检测能力双SOTA!
多标签图像识别前沿跟踪2021(上)
本文主要介绍一些2021年新发表的多标签图像识别工作,多标签图像识别早些时候的研究工作可以看另一篇文章
雨雪霏霏
2021/08/19
1.4K0
微信识图之面向多源异构数据的检测器设计
作者:breezecheng、morajiang、lyleleeli,腾讯 WXG 应用研究员 微信识图已经在微信的扫一扫识物,微信聊天/朋友圈/公众号长按图片搜一搜等场景上线,并且从最初的电商类目(鞋子、箱包、美妆、服装、家电、玩具、图书、食品、珠宝、家具等),扩展到更加丰富的万物场景,囊括了植物、动物、汽车、红酒、地标、菜品、名画、商标、作业以及其他通用场景。在算法架构上,微信识图主要由三大核心步骤组成,即为主体检测+子类目预测+子类目细粒度同款检索,开发一个高性能的检测器对于前两个步骤至关重要
腾讯技术工程官方号
2021/03/25
1.1K0
自然场景人脸检测技术实践
刚刚度过了一个特殊的春节,美美在这里给大家拜个晚年。相信大家作为各公司技术团队的骨干,应该也和我的同事们一样,正在紧张忙碌地用技术支撑着各方面的工作,同舟共济,抗击疫情吧。请大家注意做好个人和家庭防护,多加强运动,提高免疫力。让我们一起为武汉加油,愿疫情早日结束!
美团技术团队
2020/02/18
1.1K0
自然场景人脸检测技术实践
优Tech分享|人脸安全前沿技术研究与应用
在人脸识别技术正在被广泛运用的今天,人脸攻击技术不断进化,攻击类型也在逐步增加,给人脸安全技术带来了诸多挑战,我们应该如何应对?
优图实验室
2022/03/09
2.7K0
一个项目帮你了解数据集蒸馏Dataset Distillation
机器之心专栏 机器之心编辑部 近期由北海道大学的 Dr. Guang Li,爱丁堡大学的 Dr. Bo Zhao 和 MIT 的 Dr. Tongzhou Wang 共同发起的数据集蒸馏项目总结了数据集蒸馏领域所有优秀论文以及开源代码。 数据集蒸馏研究简介 数据集蒸馏是合成小数据集的任务,以便在其上训练的模型在原始大数据集上实现高性能。数据集蒸馏算法将要蒸馏的大型真实数据集(训练集)作为输入,并输出一个小的合成蒸馏数据集,该数据集通过在单独的真实数据集(验证 / 测试集)上在该蒸馏数据集上训练的测试模型进行
机器之心
2022/10/10
1.1K0
一个项目帮你了解数据集蒸馏Dataset Distillation
一文总结目标检测
如有排版问题,可知乎查看:zhihu.com/column/c_1255545721723191296
枫桦
2022/08/02
8501
一文总结目标检测
微信「扫一扫」识物为什么这么快?背后的秘诀竟然是
“扫”是“扫一扫”识物的亮点,带来更为便捷的用户体验。相比于“拍”的交互方式,“扫”的难点在于如何自动地选择包含物体的图像帧,这离不开高效的移动端物体检测。
腾讯云开发者
2020/03/16
7.3K0
揭秘微信「扫一扫」识物为什么这么快?
作者:arlencai,腾讯 WXG 应用研究员 微信“扫一扫”识物已上线一段时间,在公司内外均受到极大的关注。相比于行内相关竞品的“拍”,“扫一扫”识物的特点在于“扫”,带来更为便捷的用户体验。“扫”离不开高效的移动端物体检测,本文将为你揭秘。 一、背景 “扫”是“扫一扫”识物的亮点,带来更为便捷的用户体验。相比于“拍”的交互方式,“扫”的难点在于如何自动地选择包含物体的图像帧,这离不开高效的移动端物体检测。 二、问题 “扫一扫”识物是一种面向开放环境的通用物体检测——复杂多样的物体形态要求模型具有
腾讯技术工程官方号
2020/03/03
3.5K0
揭秘微信「扫一扫」识物为什么这么快?
Top Trending Libraries of 2021,PaddleOCR再开源8大前沿顶会论文模型!
熟悉深度学习的开发者对Papers with Code肯定不陌生,作为全球领先的开源机器学习资源平台,集成论文、代码、数据集等全方位资料。
用户1386409
2022/03/31
3510
Top Trending Libraries of 2021,PaddleOCR再开源8大前沿顶会论文模型!
ICLR2020|商汤提出新目标检测NAS方法:算力重分配(CRNAS)
介绍一下我在商汤科技&悉尼大学AutoML组ICLR2020最新文章,文章也会分享一些我对NAS的一些浅显的个人看法,希望能够对大家有所启发。
Amusi
2020/02/10
1.7K0
OCR技术难点解读:数学公式检测与识别
文档解析中的数学表达式检测与识别(Mathematical Expression Detection and Recognition, MEDR)是自然语言处理和计算机视觉交叉领域的重要技术,目的在于从文档中定位并解析数学公式,将其转化为结构化表示(如LaTeX、MathML等)。
合合技术团队
2025/04/23
1780
OCR技术难点解读:数学公式检测与识别
资源 | 整合全部顶尖目标检测算法:FAIR开源Detectron
选自FAIR 机器之心整理 参与:蒋思源、李泽南 昨天,Facebook AI 研究院(FAIR)开源了 Detectron,业内最佳水平的目标检测平台。据介绍,该项目自 2016 年 7 月启动,构建于 Caffe2 之上,目前支持大量机器学习算法,其中包括 Mask R-CNN(何恺明的研究,ICCV 2017 最佳论文)和 Focal Loss for Dense Object Detection,(ICCV 2017 最佳学生论文)。Facebook 称,该工具包已被应用与公司内部很多团队应用于各类
机器之心
2018/05/10
6150
1.8M超轻量目标检测模型NanoDet,比YOLO跑得快,上线两天Star量超200
目标检测一直是计算机视觉领域的一大难题,其目标是找出图像中的所有感兴趣区域,并确定这些区域的位置和类别。目标检测中的深度学习方法已经发展了很多年,并出现了不同类型的检测方法。
OpenCV学堂
2020/12/08
1.8K0
1.8M超轻量目标检测模型NanoDet,比YOLO跑得快,上线两天Star量超200
ARM-CPU150FPS | PicoDet助力移动端达到超实时检测(强烈建议工程人员学习)
目标检测被广泛应用于许多计算机视觉任务中,包括自主驾驶、机器人视觉、智能交通、工业质量检测、目标跟踪等。
集智书童公众号
2021/11/05
2.3K0
ARM-CPU150FPS | PicoDet助力移动端达到超实时检测(强烈建议工程人员学习)
不平衡之钥: 重加权法知几何
在《不平衡问题: 深度神经网络训练之殇》一文中,笔者已对缓解不平衡问题的方法进行梳理。限于篇幅原因,介绍比较笼统。在《不平衡之钥: 重采样法何其多》一文中,梳理了缓解不平衡问题的各种重采样方法。
枫桦
2022/08/02
9550
不平衡之钥: 重加权法知几何
内容 AI:建立统一的跨媒体多模态内容理解内核
作者:zixunsun@tencent.com Jeff Dean 谈 2020 年机器学习趋势:多任务和多模式学习将成为突破口 2019 年下半年,CDG 广告、 CSIG 音视频,IEG 内容推荐、PCG 信息流、TEG 数平广告推荐和 AI 平台部团队、WXG 看一看团队内容技术专家沟通,大家在处理内容理解任务时候,都有融合多模态特征进行内容理解需求,同时大家具有很好的技术能力和研发经验。 我们希望能建立统一的跨媒体多模态内容理解内核,对新增内容理解任务,快速完成 0-1 步积累,提升模型实
腾讯技术工程官方号
2020/01/10
4.9K1
内容 AI:建立统一的跨媒体多模态内容理解内核
【目标检测】YOLOv9理论解读与代码分析
YOLO这个系列的故事已经很完备了,比如一些Decoupled-Head或者Anchor-Free等大的策略改动已经在YOLOv8固定下来,后面已经估计只有拿一些即插即用的tricks进行小改。
zstar
2024/05/24
2.1K0
【目标检测】YOLOv9理论解读与代码分析
微信视觉团队斩获CVPR Video Similarity大赛双赛道冠军,视频号也用到了这些技术
视频的内容理解在内容审核、产品运营和搜索推荐等场景都有重要作用。其中,Video Similarity(视频相似性)是视频理解最底层最重要的技术之一,应用在短视频搬运打击、直播录播和盗播打击以及黑库检索等场景,这些应用对视频内容生态至关重要。微信视觉团队报名参加了 CVPR 2023 Video Similarity Challenge,该比赛由 Meta AI 主办,旨在推动视频拷贝检测领域的进步。团队最终获得该比赛双赛道冠军,得分远超其他团队,相关技术方案也在视频号落地使用。
机器之心
2023/08/07
5160
微信视觉团队斩获CVPR Video Similarity大赛双赛道冠军,视频号也用到了这些技术
推荐阅读
相关推荐
YOLO界再起波澜!mAP 51.4,149FPS,目标检测,一个就够了
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档