gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:49:31 25 4
gpt4 key购买 nike

我实际上是在尝试循环菜单。对于给定的字符,我的程序应该根据我的逻辑做出响应。在按“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 函数在输入缓冲区中为您提供了一个字符,但是您按下两个 键来输入一个数字:数字 < em>和 Enter 键。 Enter 键将在输入缓冲区中添加一个换行符,并且不会被丢弃。因此下一次迭代 cin.get 将读取该换行符。

解决方案?在cin.get 之后向cin 请求ignore characters until (and including) a newline .

关于c++ - while 循环不能正常工作,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29006974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com