gpt4 book ai didi

c++ - 如何防止开关功能中的菜单重复出现?

转载 作者:行者123 更新时间:2023-11-28 00:23:32 26 4
gpt4 key购买 nike

在这段代码中,菜单将在制作 a 或 b 的一部分后出现两次,我如何防止这种情况发生?我怀疑它与 cin.get 可能从第一个 cout 语句中捕获一个空间有关。如果是这种情况,那么解决方案就是会占用该空间的东西。我知道 getline 适用于字符串,但这是一种 char 数据类型。还有一个快速相关的问题,是否有一段代码的行为类似于 getline(cin << ws, stringName) 对于字符串但对于 char 数据类型?

#include <iostream>
#include <string>
#include <cctype>

using namespace std;


void displayMenu();

int main()
{
char cSelection;
string sSelection;

//Create menu
const char OPTION_READING = 'A', OPTION_READINGTWO = 'B', OPTION_ENDING = 'C';

do
{
displayMenu();
cout << "\nPlease choose an option" << endl << endl;
cin.get(cSelection);

//respond to choice
switch (cSelection)
{
case OPTION_READING:
case 'a':
cout << "You picked 1" << endl;
break;

case OPTION_READINGTWO:
case 'b':
cout << "You picked 2" << endl;
break;

case OPTION_ENDING:
case 'c':
cout << "Thank you for using this program!";
return 0;

default:
cout << cSelection << " " << "is an invalid choice";


}
} while (toupper(sSelection[0] != OPTION_ENDING));


}
void displayMenu()
{

cout << "\t \t \t" "Menu" << endl << endl;
cout << "A. Option 1\n";
cout << "B. Option 2\n";
cout << "C. Quit program";

}

最佳答案

cin.get(cSelection); 之后放置 cin.get(); 以清除换行符。

关于c++ - 如何防止开关功能中的菜单重复出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26231456/

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