Jaky_Brown 2022-10-20 17:09 采纳率: 100%
浏览 21
已结题

关于#c++#的问题:vs2022如何实现清除输入缓存

vs2022如何实现清除输入缓存,使用什么源文件可以实现。
我用的是
#include<conio.h>

fflush(stdin)
但是没用

  • 写回答

1条回答 默认 最新

  • fortunely2 2022-10-20 19:28
    关注

    fflush是冲刷流。

    #include <stdio.h>
    int fflush(FILE *stream);
    

    对于输出流,fflush强迫写所有的用户缓冲数据到指定输出,或通过基础的写函数更新流。
    对于输入流关联的可定位文件(如磁盘文件,不能是管道或终端),fflush()丢弃从基本文件获取的,但还没有被APP使用的任意缓冲数据。

    你程序中的stdin,通常是指标准输入,也就是终端,而且是输入流,因此用法是错误的。
    如果你是想将用户缓冲区内容输出到终端,那么应该使用fflush(stdout);
    如果你是想丢弃用户输入缓冲区的内容,那么可以用cin.ignore(numeric_limits::max(),'\n');,详见在 C/C++ 中清除输入缓冲区_三贝勒文子的博客-CSDN博客_c++清空输入缓冲区
    实际上,cin.ignore(n, c)是忽略字符并计数,直到忽略的字符是c,或者忽略的字符数目达到n,才停止。

    参考:
    fflush(3) - Linux manual page

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 已采纳回答 10月21日
  • 创建了问题 10月20日

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用