为什么 while 里面的 cin 不停止获取用户输入?

2024-01-05

我现在开始学习 C++,所以我想这将是一个非常简单的新手问题。

那么,为什么 while 内的“cin >> x”行不会停止循环以获取用户输入(如果用户输入字符而不是数字)?

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    int x = 0;
    cout << "Please, enter x: ";
    cin >> x;
    while (!cin)
    {
        cout << "Please, it must be a number!\n";
        cin >> x;
    }
    cout << "Thanks!.";
    cin.ignore();
    cin.ignore();
}

我才学习 C++ 两天,所以我完全不知道“cin”到底是什么。我尝试使用“cin.sync()”和“cin.clear()”,但仍然没有运气。 我知道不可能做“cin=true”或“cout


嗯,你的程序应该稍微修正一下

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    int x = 0;
    cout << "Please, enter x: ";
    cin >> x;
    while (!cin)
    {
        cin.clear();
        cin.ignore(10000, '\n');
        cout << "Please, it must be a number!" << endl;
        cin >> x;
    }
    cout << "Thanks!.";
}

这样它就可以按预期工作。有关它的更多信息here https://stackoverflow.com/questions/5131647/why-would-we-call-cin-clear-and-cin-ignore-after-reading-input。一般来说,您需要清除 cin 中的所有错误内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 while 里面的 cin 不停止获取用户输入? 的相关文章

  • 使用 TCP 套接字在本地代理视频

    我一直对向媒体浏览器添加对视频播客的支持非常感兴趣 我希望用户能够浏览可用的视频播客并从互联网上流式传输它们 这真的很容易 因为媒体播放器等将愉快地播放存在于云中的文件 问题是我想在本地缓存这些文件 因此同一集的后续观看将不涉及流式传输 而
  • 为什么在 lambda 内部引发异常是 C# 7 的一项功能? [复制]

    这个问题在这里已经有答案了 该语句在 VS2015 中无法编译 但在 VS2017 中可以编译 var example new Action gt throw new Exception 为了支持在 lambda 表达式内抛出异常 必须对
  • C - 计算文件中的单词、字符和行数。字符数

    我必须用 C 编写一段代码 输出给定文件中的字符数 行数和单词数 任务看起来很简单 但我现在真的不确定出了什么问题 所以 这是代码 include
  • 将 ARGB 拆分为字节值

    我有一个 ARGB 值存储为 int 类型 它是通过调用 ToArgb 来存储的 我现在想要来自 int 值的各个颜色通道的字节值 例如 int mycolor 16744448 byte r g b a GetBytesFromColor
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • C 中的 '\0' 和 printf()

    在 C 入门课程中 我了解到在存储字符串时存储空字符 0在它的最后 但是如果我想打印一个字符串怎么办 printf hello 虽然我发现它并没有结束 0通过以下声明 printf d printf hello Output 5 但这似乎不
  • 析构函数与成员函数竞赛

    当我在析构函数内时 其他线程是否可能开始执行对象的成员函数 遇到这种情况该如何处理呢 C 没有内在的保护来防止在删除对象后使用它 忘记竞争条件 另一个线程可以在完全删除你的对象后使用你的对象 Either 确保只有一个位置 代码拥有该对象
  • 如何在Unity Inspector中创建多维数组?

    如何在 Unity Inspector 中创建枚举多维数组并使其可序列化 以便我可以从不同的脚本调用它 public enum colors red blue green yellow cyan white purple public in
  • 为什么我收到编译错误“使用已删除的函数 'std::unique_ptr ...”

    我收到一条巨大的编译错误消息 c mingw include c 6 1 0 bits predefined ops h 123 18 error use of deleted function std unique ptr lt Tp D
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • 是否自初始化 'A a = a;'允许吗?

    此代码在运行时在复制构造函数中失败 但编译器 MSVS2008 没有发出警告 您能解释一下 最好引用标准 这段代码是否非法或什么 我理解 A a a 永远不应该写在第一位 但我正在寻找理论背景 class A public A p new
  • 如何解析多态 JSON 数组?

    我有一个 JSON 格式的文件 其中包含个人用户的记录 一些用户的记录中间有一个评论字段 我只想解析顶级项目 全名 贡献者姓名 电子邮件 使用 Newtonsoft JSON 解析器 但我似乎无法让它识别单个对象 当我将整个字符串解析为一个
  • ef core 在更新数据库期间不使用 ASPNETCORE_ENVIRONMENT

    我使用 Visual Studio 通过一定的迁移来更新我的所有环境 使用下面的命令效果很好 update database Migration initMigrationProduct c ProductContext Environme
  • WCF 服务中的缓冲区大小

    我们有一个 WCF 服务 它执行某些存储过程并将结果返回给 silverlight 客户端 某些存储过程最多返回 80K 行 下面给出的是 web config 中服务的设置
  • 从 AuthorizeAttribute 继承的属性不起作用

    我目前正在尝试根据用户角色在新的 ASP MVC 5 应用程序中实现安全性 目标是防止用户在没有特定角色 或更高角色 的情况下访问某些控制器或控制器方法 根据到目前为止我所读到的问题 我创建了一个继承 AuthorizeAttribute
  • 如何解决 boost::multi precision::cpp_dec_float 除法错误

    除以boost multiprecision cpp dec float有某种舍入误差 如下 include
  • NSubstitute - 测试特定的 linq 表达式

    我在当前正在开发的 MVC 3 应用程序中使用存储库模式 我的存储库界面如下所示 public interface IRepository
  • 调用泛型类的方法

    这是上下文 我尝试编写一个映射器来动态地将域模型对象转换为 ViewModel 对象 我遇到的问题是 当我尝试通过反射调用泛型类的方法时 出现此错误 System InvalidOperationException 无法对 Contains
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • SMTP 客户端在 C# 应用程序中显示错误“未采取请求的操作”

    我正在尝试使用 hotmail 帐户设置电子邮件发送应用程序 代码如下所示 MailMessage mail new MailMessage from to mail Subject Proba email mail Attachments

随机推荐

  • 修改Vite/Rollup中资产的构建路径?

    假设我有这个文件夹结构 parent parent html parent js child child html child js 我希望它们在我的 dist 文件夹中以相同的结构输出 默认情况下 这是获取输出的内容 dist asset
  • 如何使用 jQuery 获取具有特定 CSS 属性的第一个父级?

    我需要找到第一个拥有的父母position relative 类似于下面的示例 但我的真实内容将动态生成 div div div div div div 您知道使用 jQuery 执行此操作的简单方法吗 You can filter的集合p
  • iOS 5 中的表情符号和 UIWebView

    我注意到我的应用程序中的表情符号已停止在 iOS 5 中的 UIWebView 上正确显示 所有字符在显示时都会被编码为 HTML 并且输出 HTML 为 p Emoji iOS 4 55357 56850 p 此 UTF 8 编码的 HT
  • ipv6 向后兼容 ipv4 吗?

    我有一个使用 ipv4 编写的小 udp 示例程序 如果我将代码更改为 ipv6 我仍然能够与使用具有 ipv4 地址的侦听器的任何人进行通信吗 我正在查看移植示例 http ou800doc caldera com en SDK neta
  • 如何将 ZeroMQ 套接字与 Ratchet Web-socket 库绑定以实现 PHP 应用程序的实时应用程序?

    我只是涉及 websocket Ratchet 和 ZeroMQ 的整个领域的初学者 以我的基本理解 websocket有助于在服务器和客户端之间创建开放连接 Ratchet是一个基于 PHP 的库 它使用 PHP 的核心 Socket 函
  • 有人知道 Java 的邮件(SMTP)传递库吗?

    我想发送邮件而不用担心用于投递的 SMTP 服务器 So Java邮件API http java sun com products javamail 对我不起作用 因为我必须指定要连接的 SMTP 服务器 我希望图书馆通过查询邮件地址域的
  • Spring Data Rest PUT 与 PATCH LinkableResources

    我正在使用 Spring Data REST 来公开我的实体及其关系 我在两个实体之间有一对一的关系 并且我正在尝试更新 更改与 PUT 和 PATCH 的关系 我注意到 Spring Data REST 只允许您更新链接资源 JPA 映射
  • 检测IE9而不进行功能检测

    所以我需要检测 IE 9 我知道我真的应该使用特征检测 https stackoverflow com questions 1944169 detecting ie using jquery 1944186 1944186但我不知道是什么功
  • 如何通过mvn命令顺序执行2个Java类

    我有 2 个具有共生关系的 Java 类 类 1 生成一些输出文件 类 2 使用类 1 的输出并验证它 这两个类都从命令行获取输入 这个项目是基于maven的 鉴于这种共生性质 我不确定如何 连接它们 我的想法是 编写另一个 Java 类
  • exec:语法错误:“返回”外部函数

    我将代码片段存储在 Postgres 数据库中 当我需要代码时 我在数据库中找到它并使用exec 功能 代码片段是extract功能 不幸的是它返回了SyntaxError return outside function Method de
  • 空对基类的目的是什么?

    libstdc 库 https github com gcc mirror gcc blob 16e2427f50c208dfe07d07f18009969502c25dc8 libstdc 2B 2B v3 include bits st
  • 在 Perl 中,如何正确解析带有引号字符串的制表符/空格分隔文件?

    我需要解析 Perl 中包含很多列的制表符 空格分隔的文件 这些值使得大字符串括在双引号内 这些字符串可以包含任何字符 例如制表符和空格或其他任何字符 当我尝试使用 split 函数解析它们时 它也会拆分这些字符串 现在我怎样才能让 per
  • 固定宽度整数类型的整数文字

    对于像这样的固定宽度整数类型 是否有一些针对整数文字的 C 建议 i s type is unsigned int auto i 10u j s type is uint32 t auto j 10u32 Yes P1280R0 整数宽度文
  • PostgreSQL 加载 back.json 文件时出现重复密钥问题

    我有一个 PostgreSQL 数据库 我在其中执行了 python manage py dumpdata 将数据备份到 json 文件中 我创建了一个新的 PostgreSQL 数据库 执行了迁移 一切都顺利进行 当我尝试使用 pytho
  • 单击外部时如何隐藏 DIV 元素

    我有一个div当我点击外部时想要隐藏它 我的代码是 div The div must be above button div mydiv click function e e stopPropagation document click f
  • Qt 的最佳 C# 绑定?

    我用 C 使用 SDL NET 和 OpenGL 编写了一个游戏 我想为其添加一个菜单 为此我需要 Qt 您推荐在 C 中为 Qt 使用哪些绑定 Qyoto http techbase kde org Development Languag
  • 使用 ggplot 围绕多个 geom_point 组绘制轮廓

    I currrently have the code included below to draw this 我想做的是为每个组制定一个大纲 以遵循每个组中的所有要点 而不是像目前那样跳过其中的一些要点 此外 我希望每个轮廓都有半透明填充
  • 类别 - 子类别 - 产品选择表单的大多数 djongonic 解决方案?

    假设我们有这三个模型 cagegory id name subcategory id id category name product id id sub category name 共有30个大类 每个大类下有30个小类 每个小类下有50
  • 另一个 FizzBu​​zz 解决方案[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我参加了一次工作面试 被要求用 PHP 解决 FizzBu zz 问题 编写一个程序 打印从 1 到 100 的数字 但是对于 3 的
  • 为什么 while 里面的 cin 不停止获取用户输入?

    我现在开始学习 C 所以我想这将是一个非常简单的新手问题 那么 为什么 while 内的 cin gt gt x 行不会停止循环以获取用户输入 如果用户输入字符而不是数字 include