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

时间:2015-03-12 10:15:07

标签: c++ while-loop do-while

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

1 个答案:

答案 0 :(得分:4)

请注意:cin.get函数在输入缓冲区中为您提供单个字符,但您按两个键输入单个数字:数字 输入键。 Enter 键将在输入缓冲区中添加换行符,不会被丢弃。因此,下一次迭代cin.get将读取该换行符。

解决方案?在cin.get询问cinignore characters until (and including) a newline之后。