while 循环不能正常工作,C++

while loop doesnt work fine, c++

我实际上是在尝试循环菜单。对于给定的字符,我的程序应该根据我的逻辑做出响应。在按“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;
}

想一想:cin.get 函数在输入缓冲区中给你一个字符,但是你按 两个 键来输入一个数字:数字 Enter 键。 Enter 键将在输入缓冲区中添加一个换行符,并且不会被丢弃。所以下一次迭代 cin.get 将读取该换行符。

解决办法?在 cin.get 之后问 cinignore characters until (and including) a newline