我实际上是在尝试循环菜单。对于给定的角色,我的程序应该根据我的逻辑做出反应。在按'0'时程序应该退出,在'1'它应该采取一些新值(我通过一个函数)和'2'它应该打印这些值。循环在第一次迭代时工作正常,但是当它再次启动时,它会错过输入命令(cin.get)并继续流程 - 此时不执行任何操作 - 然后它再次变好。我不确定发生了什么。
这是我的代码
#include <iostream>
#include <string>
using namespace std;
//prototypes
void init_subscriber(Subscriber &s);
void print_subscriber(Subscriber &s);
int main()
{
char option = ' ';
Subscriber s1;
while (option != '0')
{
cout << "Introduce Options:" << endl;
cout << "(0) exit" << endl << "(1) Add subscriber" << endl << "(2) Print subscribers info" << endl << endl;
cin.get(option);
if (option == '1')
{
init_subscriber(s1);
}
else if (option == '2')
{
print_subscriber(s1);
}
else if (option == '0')
{
option = '0';
}
}
cout << "we are out of while" << endl;
cin.get();
return 0;
}
答案 0 :(得分:4)
请注意:cin.get
函数在输入缓冲区中为您提供单个字符,但您按两个键输入单个数字:数字和 输入键。 Enter 键将在输入缓冲区中添加换行符,不会被丢弃。因此,下一次迭代cin.get
将读取该换行符。
解决方案?在cin.get
询问cin
至ignore characters until (and including) a newline之后。