C++中如何阻止用户输入字符串

2024-04-18

您好,我对运算符重载相对较新,但我确实相信它是我在制作的几乎每个程序中都遇到的问题的答案。我的目标是超载std::cin >> int_var因此它只能接受整数输入,如果它检测到输入了除 int 之外的输入,它会将用户放入循环中,直到输入是 int。

这就是我到目前为止想到的

#include <iostream>

std::istream& operator>> (std::istream& Cin, int *var)
{
  int var2;
  if(!Cin >> var2)
  {
    std::cout << "Invalid input!";
  }
  return Cin;
}

int main() {
  int var;
  std::cin >> var;
  std::cout << var;

}  

注意:此代码片段只是为了看看我是否可以检测到无效输入。它还不需要它来包含循环。


The correct获取用户输入的方法是:

  1. read a string
  2. 尝试将字符串转换为 int (或其他)
  3. if the conversion fails, you should either:
    • 询问并重试,仅当已知用户是人类时
    • 终止(要求您的用户提供有效的输入)

这是因为用户将always每次输入提示后按 Enter 键。

这个问题有很多不同的说法。这是我的最后一个答案,并附有一个可行的示例。 https://stackoverflow.com/a/70736592/2706707

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

C++中如何阻止用户输入字符串 的相关文章

  • C# 从字符串中删除 URL

    这看起来非常简单 但我尝试的一切似乎都不起作用 假设我有以下字符串 string myString http www mysite com folder file jpg 我该如何处理它以删除 URL 并仅保留 file jpg 作为字符串
  • 如何在 C# 中导航任何 JSON 树?

    我需要像导航 XML 一样导航 Json 结构XmlDocument 结构未知 我需要迭代节点来解析一些数据 这可能吗 我知道我可以使用JavaScriptSerializer将其反序列化为已知类型 但事实并非如此 因为我可以接收任何有效的
  • 警告:从不兼容的指针类型为链接列表数组赋值

    我正在执行一个 C 程序 但收到警告 警告 来自不兼容指针类型的赋值 我在这里复制相关代码 Structure I am using typedef struct graph node int id int weight struct no
  • 如何在 Linux 中检测通过 GUI 登录的用户

    我想在我的程序中捕获通过 GUI 登录的用户名 我的程序作为守护进程从 root 登录运行 如果非 root 用户通过 GUI 登录 我的程序应该会收到通知 我正在粘贴我当前的程序 该程序调用一个 perl 脚本 利用系统调用来检查当前登录
  • 当条件满足时如何进入调试模式?

    有没有办法在满足一定条件时进入调试模式 例如 假设我想在以下行进入调试模式i 1变为真 using System namespace ConditionalDebug public class Program public static v
  • 硬币数量有限的最小硬币找零问题

    具体来说 问题是 给定面值数组coins 每个硬币的限制数组limits 和数量amount 返回minimum需要的硬币数量 以获得amount 或者如果不可能返回 null 另外填充数组change解决方案中使用的每个硬币的数量 这是我
  • 如何在 Windows 中获取和设置系统音量

    我想使用 unity 和 c 将键盘点击时的操作系统音量设置为一定水平 例如我想将 Windows 音量 不是 unity 设置为 70 我该怎么做 void Update if Input GetKeyDown KeyCode A Set
  • HttpContext 类及其线程安全

    我有一个辛格尔顿应用程序中的对象具有以下属性 private AllocationActionsCollection AllocationActions get return HttpContext Current Session Allo
  • FileStream.(Begin/End)(Read/Write)的同步要求

    Net 可以接受以下多线程调用模式吗文件流 http msdn microsoft com en us library y0bs3w9t 28v VS 90 29 aspx 多个线程调用这样的方法 ulong offset whatever
  • 表达式树序列化器

    我想在客户端使用 Linq 表达式 序列化它们并在服务器端执行它们 为此我想使用 http expresstree codeplex com http expressiontree codeplex com 但我想针对自己的 WCF 调用执
  • 我可以使用什么 C++ 库在 Windows 上将 PDF 转换为图像?

    我正在开展一个需要分析图像的项目 这些图像的主要来源是网络摄像头 但最近我们被要求添加对上传文件和扫描仪的支持 这在大多数情况下都很好 只是他们希望我们能够使用 PDF 格式的文档 我需要一个原始像素位图进行处理 在 Mac 上 我可以使用
  • Unity构建错误

    所以我制作了我的游戏并尝试构建它 我收到一些对我来说毫无意义的错误 这是错误 UnityEditor BuildPlayerWindow BuildMethodException 2 个错误 在 UnityEditor BuildPlaye
  • 无需使用abs函数或if语句即可获取绝对值

    我在想如何在不使用的情况下获得整数的绝对值if声明也不abs 起初我使用的是左移位 lt lt 试图将负号移出范围 然后将位右移回原来的位置 但不幸的是它对我不起作用 请让我知道为什么它不起作用以及其他替代方法 From 位摆弄黑客 htt
  • 可以匹配具有任意小数位数的非零浮点数的最短正则表达式是什么?

    可以匹配具有任意小数位数的非零浮点数的最短正则表达式是什么 它应该接受像这样的数字 1 5 9652 7 00002 0 8 0 0500 0 58000 0 01 0 000005 0 9900 5 7 5 7 005 但拒绝诸如 02
  • strstr() 函数类似,忽略大小写

    我有两根弦 可以说 str1 One Two Three and str2 two 我想知道是否有任何函数可以检查第一个字符串中第二个字符串的匹配 并返回指向第一个字符串的指针 例如strstr 但它不会将相同的字母 大写或小写 视为两个不
  • 当代码依赖于两个对象的子类型时,是否有设计模式可以处理

    我会尽力尽可能明确 以防有比回答我的问题更好的解决方案 我正在使用 C 工作 我有一个报告模板 可以包含任意数量的打开的 功能 功能可能是信息表 饼图 条形图 列表等 我将报告生成为文本文件或 PDF 将来可能有其他选项 到目前为止我有一个
  • .NET 参考源代码中的四个破折号组是什么?

    我正在浏览源码PluralizationService http referencesource microsoft com System Data Entity Design System Data Entity Design Plura
  • 在 __device/global__ CUDA 内核中动态分配内存

    根据CUDA 编程指南 http developer download nvidia com compute cuda 3 2 prod toolkit docs CUDA C Programming Guide pdf 第 122 页 可
  • 判断一个点是否在多面体内部

    我试图确定某个特定点是否位于多面体内部 在我当前的实现中 我正在研究的方法采用我们正在寻找多面体面的数组 在本例中为三角形 但稍后可能是其他多边形 的点 我一直在尝试根据这里找到的信息进行工作 http softsurfer com Arc
  • 列出所有会话信息

    我想在页面中显示我的asp net页面 aspx 的所有会话信息 我怎样才能做到这一点 编程语言是C 这两种方法对我有用 稍微改进和纠正了大卫的答案 第一种方法 for int i 0 i lt Session Count i var cr

随机推荐