gpt4 book ai didi

c++ - 如何使用/使其在C++中插入日期类型(dd/mm/yyyy)时自动出现?

转载 作者:搜寻专家 更新时间:2023-10-31 01:32:15 25 4
gpt4 key购买 nike

我希望在我的医院管理系统中自动出现一个“斜杠”。当用户使用我的应用程序输入他们的生日时,/ 分隔符应该在他们键入时自动出现。

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

int main()
{
char slash;
int dy, mn, yr;

cout << "\nEnter your date of birth (dd/mm/yyyy) : ";
cin >> dy;
cin >> slash;
cin >> mn;
cin >> slash;
cin >> yr;
}

最佳答案

假设你想在用户输入每两个字符后输出“/”,就像一种"template",这在一般情况下是不可能的。

除非用户更改该设置,否则终端仿真器往往是行缓冲的,而您无法控制它。行缓冲意味着除非且直到用户点击 Enter,否则不会向您的程序发送任何内容,这会立即破坏效果:

Animated screenshot of this approach not working

/ 是自动编写的,但看起来不正确。

如果您完全控制终端并正确设置它,它可能看起来像这样:

Animated screenshot of this approach working

当时我的 PuTTY 配置:

PuTTY configuration to make the approach work

但是,我还必须逐个字符地读取数据(否则 C++ 不知道您在两位/四位数字后就完成了),准备事后转换为数字。呸!

上面的代码如下:

// Requires "stty raw" to disable line buffering
// ("stty cooked" to restore), as well as no line
// buffering on the client end

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

int main()
{
char dy1, dy2;
cout << "\nEnter your date of birth (dd/mm/yyyy) : " << flush;

cin >> dy1 >> dy2;
cout << '/' << flush;

char mn1, mn2;
cin >> mn1 >> mn2;
cout << '/' << flush;

char yr1, yr2, yr3, yr4;
cin >> yr1 >> yr2 >> yr3 >> yr4;

std::cout << "\n" << dy1 << dy2
<< '/' << mn1 << mn2
<< '/' << yr1 << yr2 << yr3 << yr4 << '\n';

// Now create some useful integers from these characters
}

无论如何,要真正做到这一点,you'd need to use a "GUI" library like ncurses that can fully take control of the session for you .

最终,这不值得。只需让用户输入完整的 dd/mm/yyyy 然后解析它的有效性。

关于c++ - 如何使用/使其在C++中插入日期类型(dd/mm/yyyy)时自动出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43681305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com