如何输入特定数量的数字c ++? [复制]

Posted

技术标签:

【中文标题】如何输入特定数量的数字c ++? [复制]【英文标题】:how to take an input of particular number of digit c++? [duplicate] 【发布时间】:2019-12-16 05:26:53 【问题描述】:

我正在编写一个函数,它以 DD/MM/YYYY 的形式从用户那里获取日期,我希望用户只输入数字并且程序打印 /。

我编写了一个代码,显示按摩提示用户输入日期并将日、月和年存储在单独的变量中。

    int day;
    int month;
    int year;

    cout << "Enter your birthday date:  "
    cin >> day;
    cout << "/";
    cin >> month;
    cout << "/";
    cin >> year;

我想要的是当用户输入日期女巫是 2 位数字时,程序 自动 移动到下一行并打印 / 所以用户输入下一个输入 无需按 enter。 但是我写的代码需要在每次输入后按回车。

【问题讨论】:

【参考方案1】:

这不是你的程序需要这个:它是你的终端。

默认情况下,许多终端是行缓冲的——它们只发送完整的行。

您通常可以在终端的设置中更改此设置,但要求您的用户这样做有点麻烦。

或者,有一些非常不便携的方法可以从程序内部欺骗各种终端自主执行此操作。 (如果你要走这条路,ncurses 可能是最便携的。)

但是,最终,在交互中获得这种灵活性是 GUI 的发明目的,您可能会考虑改用这种范式。

否则,如果您坚持使用非图形界面,我建议您只接受输入流中的日期,采用通常的格式(例如 YYYY-MM-DDDD/MM/YYYY)并在必要时对其进行解析。这也将与脚本和管道输入更好地交互;通常在处理命令行时,您应该尝试使其不依赖于人类一次输入一个字符,因为这不是您的程序看到它的方式!

【讨论】:

【参考方案2】:

答案是:

没有标准的方法来做到这一点。事实上,一些库(依赖于平台的,如 windows.h / termcap.h 或第三方,如 conio.h)允许您使用

char getchar(void);

函数,或将您的终端(或按范围的标准输入)置于“原始”/“规范”模式,其中字符提示不会等待用户按下回车键,并在它出现后立即报告字符键入,因此需要将读取序列移动到循环中。

我建议为此类问题找到解决方法,或者只是进行一些错误检查以防止用户在字段中输入愚蠢的数据

【讨论】:

以上是关于如何输入特定数量的数字c ++? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从目录中获取特定数量的文件? [复制]

如何找到满足条件的数字的确切数量? [复制]

你能告诉我如何从声音中检测事件,无论其波或频谱的一部分是不是超过特定数量的阈值? [复制]

如何优化此代码以运行更大的值? [复制]

我们如何生成一定数量的随机数并将它们相互链接,而无需将数字链接到自身? [复制]

是否可以在特定输入长度后阻止用户输入并禁止特定键? [复制]