私の方法はちょっと面倒かもしれませんが、私はメニューの入力を検証しようとしていますので、1-6の数字だけが入力され、それ以外は受け入れられません。私はコードを入力して文字列として入力し、それをintに変更してスイッチケースで使用するコードを用意していますが、より効率的に動作させることができます。何か案は?文字列を1文字に変換する
void menu(double pi, char ssTwo) //menu for choosing a shape
{
string choice;
cout << "Welcome to the shape calculator!\n\nPlease select what you wish to calculate:\n\n1 - Area of a Circle\n\n2 - Circumference of a Circle\n\n3 - Area of a Rectangle\n\n4 - Area of a Triangle\n\n5 - Volume of a Cuboid\n\n6 - Exit the program\n\n ";
cin >> choice;
while (choice != "1" && choice != "2" && choice != "3" && choice != "4" && choice != "5" && choice != "6")
{
cout << "Invalid input, please enter a number of 1-6\n\n";
cin >> choice;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
int choiceInt = atoi(choice.c_str());
system("CLS");
switch (choiceInt) //switch case for each shape
{
case 1:
circleArea(pi, ssTwo);
break;
case 2:
circleCircum(pi, ssTwo);
break;
case 3:
rectanArea(ssTwo);
break;
case 4:
triangArea(ssTwo);
break;
case 5:
cubVol();
break;
case 6:
exitSystem();
break;
default:
cout << "Invalid input, please enter a number of 1-5\n\n";
menu(pi, ssTwo);
break;
}
}
ASCII値を使用します。あなたは文字 '1'を49に対してチェックすることができます。したがって、数値を数値として脅かすだけです –
''case '1' 'を使用すると何が問題になりますか? – stark
@stark私はちょうどwhileステートメントが長すぎると思う、私はそれをより効率的にする方法があると思っている。それはちょうど私がばかげているかもしれないが、それは動作するので、私はおそらくそれをそのまま残すだろう。 – PinkieBarto