在這段代碼中,在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";
}
它不是'cout'中的空間。它與您的菜單選擇字符一起輸入的換行符。以一種或另一種方式消費換行符。 – WhozCraig 2014-10-07 08:33:38