检测 C 中的 ENTER 键

新手上路,请多包涵

我有一个这样的程序,

 char name[100];
char age[12];
cout << "Enter Name: ";
cin >> name;

cout << "Enter Age: ";
cin >> age;

现在年龄是一个可选字段,因此用户只需按 ENTER 键并将该值设置为 NULL。但问题是, cin 不带 ENTER 键,只是呆在那里等待有效的键盘字符或数字输入。

我认为问题在于 cin 需要一个有效的输入,因此永远留在那里。

所以我尝试了以下方法来检测年龄的 ENTER 按键。

 cout << "Enter Age: ";
if (cin.get() == '\n') {
            cout << "ENTER WAS PRESSED" << endl;
        }

现在只要用户在输入名称后按下 ENTER 键,它就会直接进入 IF 条件。

我也试过:

 getline(cin, age);

但这也不会停留在 cout << "Age: "; 等待用户输入。

用户可以输入有效年龄,也可以直接按 ENTER 键不输入年龄。

对于以下代码:

 cout << "Enter Name: ";
        cin >> name;

        cout << "Enter Age: ";
        if (cin.get() == '\n') {
            cout << "ENTER WAS PRESSED" << endl;
        }

输出是:

 Enter Name: asdf
Enter Age: ENTER WAS PRESSED

我希望光标在 Enter Age: _ 处等待

我怎样才能做到这一点?

原文由 user5749114 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

你试过这个吗?:

 cout << "Press Enter to Continue";
cin.ignore();

也看看 这个问题

原文由 Arturo Aguilera 发布,翻译遵循 CC BY-SA 3.0 许可协议

当您使用 cin.get() 编译器将采用最后使用的 Enter(即输入名称时按下 Enter 键)。所以你需要让编译器避免最后输入的 Enter 键这样做你需要包括 cin.ignore() 在使用之前 cin.get()

原文由 Sarwesh Arivazhagan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题