C++ 使用switch,但我想用字符串而不是int进行选择
下面的代码只是主要部分,不包括头文件或其他cpp文件。在程序结束时,我想将用户的选择打印到csv文件中。除非我能改变用户做出选择的方式,否则我不知道该怎么做 1.我可以使用其他int作为用户的选择吗 2.如果我能够为用户的选择做除int以外的事情,那么像我目前所做的那样,只在最后打印到csv代码是否有效C++ 使用switch,但我想用字符串而不是int进行选择,c++,csv,printing,switch-statement,C++,Csv,Printing,Switch Statement,下面的代码只是主要部分,不包括头文件或其他cpp文件。在程序结束时,我想将用户的选择打印到csv文件中。除非我能改变用户做出选择的方式,否则我不知道该怎么做 1.我可以使用其他int作为用户的选择吗 2.如果我能够为用户的选择做除int以外的事情,那么像我目前所做的那样,只在最后打印到csv代码是否有效 #include <iomanip> #include <iostream> #include <string> #include <cstdlib&g
#include <iomanip>
#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
#include "Header.h"
using namespace std;
void PrintDrink(Drink);
int main(int argc, char* argv[])
{
int meat;
int type;
string userName;
do {
cout << "\n\nThis program will help you BBQ some of the best meat you have ever tasted. With care taken to ensure \n";
cout << "these steps are followed and the correct temperatures are used, you will find yourself a BBQ expert in no time. \n\n";
cout << "Can we start with getting your name : ";
cin >> userName;
cout << userName << " welcome to this BBQ program.\n\n";
cout << "You can select any of the following to make today: \n";
cout << "1 - Chicken Wings\n";
cout << "2 - Chicken Breast\n";
cout << "3 - Whole Chicken\n";
cout << "4 - Chicken Thighs\n";
cout << "5 - Pork Ribs\n";
cout << "6 - Pork Roast\n";
cout << "7 - Pulled Pork\n";
cout << "8 - Pork Chops\n";
cout << "9 - Pork Tenderloin\n";
cout << "10 - Beef Ribs\n";
cout << "11 - Brisket\n";
cout << "12 - Prime Rib Roast\n";
cout << "Your selection: ";
cin >> meat;
switch (meat)
{
case 1:
cout << "Chicken Wings can be amazing.\n You have two options:\n";
cout << "grill - Grill them\n";
cout << "smoke - Smoke them\n";
cout << "Your selection: ";
cin >> type;
switch (type) {
case 1:
cout << "After seasoning the chicken\nCook them on a medium temperature grill.\nThey will be need to cook for approximately 6 to 8 minutes per side.";
break;
case 2:
cout << "Smoking your chicken will add great flavor.\nSmoke the wings at 250 degrees for approximately 2 to 2.5 hours.";
break;
}goto exit_loop;
case 2:
cout << "Chicken Breasts can be amazing.\n You have two options:\n";
cout << "1 - Grill them\n";
cout << "2 - Smoke them\n";
cout << "Your selection: ";
cin >> type;
switch (type) {
case 1:
cout << "After seasoning the chicken\nCook them on a medium temperature grill.\nThey will be need to cook for approximately 7 to 8 minutes per side.";
break;
case 2:
cout << "Smoking your chicken will add great flavor.\nSmoke the wings at 250 degrees for approximately 2.5 to 3 hours.";
break;
}goto exit_loop;
case 3:
while (meat == 3) {
cout << "A whole chicken needs time to be cooked to the perfect temperature.\nFor the best whole chicken there is really only one option:\n";
cout << "That one option is to smoke the whole chicken.\nWe need to cook this chicken for approximately 45 minutes per pound\n";
double chickWeight;
cout << "Please enter the weight of your whole chicken in pounds: ";
cin >> chickWeight;
double chickTime = chickWeight * 0.75;
cout << "You will need to cook your whole chicken for " << chickTime << " minutes.\nThe chicken thighs will need an internal temperature";
cout << "of 170 degrees and the breasts will need an internal temperature of 165.\n";
goto exit_loop;
}
case 4:
cout << "Chicken thighs can be amazing.\n You have two options:\n";
cout << "1 - Grill them\n";
cout << "2 - Smoke them\n";
cout << "Your selection: ";
cin >> type;
switch (type) {
case 1:
cout << "After seasoning the chicken\nCook them on a medium temperature grill.\nThey will be need to cook for approximately 6 to 8 minutes per side.";
break;
case 2:
cout << "Smoking your chicken will add great flavor.\nSmoke the wings at 250 degrees for approximately 2.5 to 3 hours.";
break;
}while (type < 3);
goto exit_loop;
case 5:
while (meat == 5) {
cout << "Pork ribs, whether they are baby racks, ST. Louis cuts, or any other type they are best when smoked low and slow.\n";
cout << "This amazing meat is really simple to BBQ. Smoke your ribs at 225 degrees for approximately 5 to 6 hours.\n";
cout << "The ribs are done when they are tender and will bend when picking them up.\n";
goto exit_loop;
}
case 6:
while (meat == 6) {
cout << "A pork roast needs time to be cooked to the perfect temperature.\nFor the best pork roast there is really only one option:\n";
cout << "That one option is to smoke the pork roast.\nWe need to cook this roast for approximately 1 hours per pound.\n";
double porkWeight;
cout << "Please enter the weight of your pork in pounds: ";
cin >> porkWeight;
double porkTime = porkWeight * 1;
cout << "You will need to cook your pork for " << porkTime << " hours.\nThe pork will need an internal temperature of 185-195 degrees.\n";
goto exit_loop;
}
case 7:
while (meat == 7) {
cout << "Pulled pork needs to be cooked to an internal temperature that allows the connective fibers to break down\nso there is really only one option for this:\n";
cout << "That one option is to smoke the pork low and slow.\nWe need to cook this pork for approximately 1.5 hour per pound.\n";
double porkWeight;
cout << "Please enter the weight of your pork in pounds: ";
cin >> porkWeight;
double porkTime = porkWeight * 1.5;
cout << "You will need to cook your pork for " << porkTime << " hours.\nThe pork will need an internal temperature of 203 degrees.\n";
goto exit_loop;
}
case 8:
cout << "Pork chops can be amazing.\n You have two options:\n";
cout << "1 - Grill them\n";
cout << "2 - Smoke them\n";
cout << "Your selection: ";
cin >> type;
switch (type) {
case 1:
cout << "After seasoning the pork chops\nCook them on a medium temperature grill.\nThey will be need to cook for approximately 4 to 5 minutes per side.";
break;
case 2:
cout << "Smoking your pork chops will add great flavor.\nSmoke the pork chops at 250 degrees for approximately 45 minutes to 1 hour.";
break;
}while (type < 3);
goto exit_loop;
case 9:
while (meat == 9) {
cout << "A pork tenderloin needs time to be cooked to the perfect tempurature.\nFor the best pork tenderloin there is really only one option:\n";
cout << "That one option is to smoke the pork tenderloin.\nWe need to cook this tenderloin for approximately 2.5 to 3 hours.\n";
cout << "The internal temperature needs to reach at least 145 degrees.\n";
goto exit_loop;
}
case 10:
while (meat == 10) {
cout << "Beef ribs needs to be cooked to an internal temperature that allows the connective fibers to break down\nso there is really only one option for this:\n";
cout << "That one option is to smoke the ribs low and slow.\nWe need to cook this beef for approximately 8 to 10 hours.\n";
cout << "The ribs are done when they are tender and have an internal temperature of 203 degrees.\n";
goto exit_loop;
}
case 11:
while (meat == 11) {
cout << "Brisket needs to be cooked to an internal temperature that allows the connective fibers to break down\nso there is really only one option for this:\n";
cout << "That one option is to smoke the brisket low and slow.\nWe need to cook this brisket for approximately 1.5 hour per pound.\n";
double beefWeight;
cout << "Please enter the weight of your brisket in pounds: ";
cin >> beefWeight;
double beefTime = beefWeight * 1.5;
cout << "You will need to cook your brisket for " << beefTime << " hours.\nThe brisket will need an internal temperature of 203 degrees.\n";
cout << "For the best results use a Texas crunch technique at around 160 degrees.\n";
goto exit_loop;
}
case 12:
while (meat == 12) {
cout << "Prime rib Roast needs to be cooked to an internal temperature of rare to medium for the best results\n and there is really only one option for this:\n";
cout << "That one option is to smoke the prime rib low and slow.\nWe need to cook this prime rib for approximately 40 minutes per pound.\n";
double beefWeight;
cout << "Please enter the weight of your prime rib in pounds: ";
cin >> beefWeight;
double beefTime = beefWeight * 0.67;
cout << "You will need to cook your prime rib for " << beefTime << " hours.\n";
cout << "The prime rib will need an internal temperature according to the desired doneness listed below\n";
string done_ness[3] = { "rare","medium rare", "medium" };
int int_temp[3] = { 130, 135, 140 };
for (int i = 0; i < 3; i++) {
cout << done_ness[i] << ":" << int_temp[i] << " degrees\n";
}
goto exit_loop;
}
}
} while (meat < 13); {exit_loop:;
string n;
int a;
Drink d1;
cout << "What do you want to drink while your meat is cooking?\n";
cout << "Enter your drink of choice: ";
cin >> n;
cout << "How many glasses do you think you can drink while your cooking? ";
cin >> a;
d1.setName(n);
d1.setAmount(a);
PrintDrink(d1);
cout << "\nEnjoy your drink or drinks because you will love the food you're making.";
}
}
void PrintDrink(Drink d1) {
cout << "\nThe name of drink you picked: " << d1.getName();
cout << "\nThe glasses you think you can drink are " << d1.getAmount() << endl;
}
int save() {
ofstream outfile("bbqfile.csv", ios::app);
ifstream infile;
string cont;
cout << "Would you like to save your selections to excell? (Y/N)";
cin >> cont;
while (cont == "Y") {
outfile << meat << type << end;
}
outfile.close();
while (cont == "N") {
system("pause");
return 0;
}
}
#包括
#包括
#包括
#包括
#包括
#包括“Header.h”
使用名称空间std;
饮料;
int main(int argc,char*argv[])
{
内特肉;
int型;
字符串用户名;
做{
cout您可以使用字符串在用户选择的菜单之间进行比较
string choice = " ";
cout<<"Enter choice "<<endl;
cin>>choice;
字符串选择=”;
cout您可以使用字符串在用户选择的菜单之间进行比较
string choice = " ";
cout<<"Enter choice "<<endl;
cin>>choice;
字符串选择=”;
cout您可以使用char
进行用户选择或string
。这不应改变上载.csv
文件的能力。您可以使用char
进行用户选择或string
。这不应改变上载.csv
文件的能力
使用switch,但我想用字符串而不是int进行选择
switch
语句中的case
s必须是constepr
,因此为了在switch
es中使用字符串,您需要弄清楚如何使字符串通过该条件
至少在C++17之前,您不能-但是您可以创建一个哈希值/消息摘要,即constexpr
switch(hasher(string)) {
case hasher("foo"):
// do foo
break;
case hasher("bar"):
// do bar
break;
}
您的hasher
函数需要能够为编译时提供的字符串返回一个值,这样才能工作。当然可以为C字符串编写constexpr
哈希函数
使用switch,但我想用字符串而不是int进行选择
switch
语句中的case
s必须是constepr
,因此为了在switch
es中使用字符串,您需要弄清楚如何使字符串通过该条件
至少在C++17之前,您不能-但是您可以创建一个哈希值/消息摘要,即constexpr
switch(hasher(string)) {
case hasher("foo"):
// do foo
break;
case hasher("bar"):
// do bar
break;
}
您的hasher
函数需要能够为编译时提供的字符串返回一个值,这样才能工作。当然可以为C字符串编写constexpr
hash函数。我有点搞不清楚您想怎么做——特别是如果您希望用户键入“3”或者,如果您想让他们输入“整只鸡”。如果您想比较字符串,您可以考虑使用映射,尽管考虑到嵌套的CLI交互,这可能无法完全满足您的需要。但它可能是这样的:
#include <map>
unordered_map<string, int> validEntrees = {
"Chicken Wings": 1,
"Chicken Breast": 2,
"Whole Chicken": 3,
// ...snip...
"Brisket": 11,
"Prime Rib Roast": 12,
}; // I'm not sure what the proper "value" type is. Using an int here, but a function might actually produce cleaner code.
string meat;
cout << "This program will blah blah blah...\n" // rest of the preamble
cout << "You can select any of the following to make today: \n";
for (auto key : validEntrees ) {
cout << key << endl;
}
cout << "Your selection: ";
cin >> meat;
switch(validEntrees[meat]) {
case 1: // Chicken Wings
//... you get the idea
break;
}
#包括
无序映射有效树={
"鸡翅":一,,
"鸡胸肉":二,,
“全鸡”:3,
//…剪断。。。
“胸脯”:11,
“上等肋骨烤肉”:12、,
};//我不确定正确的“value”类型是什么。在这里使用int,但函数实际上可能生成更干净的代码。
串肉;
cout我有点搞不清楚你想怎么做——特别是如果你想让用户输入“3”或者你想让他们输入“整只鸡”。如果你想比较字符串,你可以考虑使用映射,尽管考虑到嵌套的CLI交互,这可能不能完全满足你的需要。但它可能是这样的:
#include <map>
unordered_map<string, int> validEntrees = {
"Chicken Wings": 1,
"Chicken Breast": 2,
"Whole Chicken": 3,
// ...snip...
"Brisket": 11,
"Prime Rib Roast": 12,
}; // I'm not sure what the proper "value" type is. Using an int here, but a function might actually produce cleaner code.
string meat;
cout << "This program will blah blah blah...\n" // rest of the preamble
cout << "You can select any of the following to make today: \n";
for (auto key : validEntrees ) {
cout << key << endl;
}
cout << "Your selection: ";
cin >> meat;
switch(validEntrees[meat]) {
case 1: // Chicken Wings
//... you get the idea
break;
}
#包括
无序映射有效树={
"鸡翅":一,,
"鸡胸肉":二,,
“全鸡”:3,
//…剪断。。。
“胸脯”:11,
“上等肋骨烤肉”:12、,
};//我不确定正确的“value”类型是什么。在这里使用int,但函数实际上可能生成更干净的代码。
串肉;
请阅读关于如何创建a的文章,这是否回答了您的问题?请阅读关于如何创建a的文章,这是否回答了您的问题?我实际上在一个旧答案中添加了一个constepr
哈希函数。没有人喜欢它,所以对此持保留态度:我实际上在一个旧答案中添加了一个constepr
哈希函数。没有人喜欢它把它和一粒盐一起吃: