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
之后问 cin
到 ignore characters until (and including) a newline。
我实际上是在尝试循环菜单。对于给定的字符,我的程序应该根据我的逻辑做出响应。在按“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
之后问 cin
到 ignore characters until (and including) a newline。