如果这个问题有点冗长,我道歉。我会尽量简短但简洁。
我正在为入门级C ++课程构建一个主要程序,我正在为仓库创建员工管理的模拟版本。一般形式是要求用户输入以选择员工类型,然后根据输入要求输入与该员工类型相关的员工详细信息。
由于这个原因,有些函数接受输入为int,float,string和char。我有一个单独的小函数,它检查'exit'作为输入,如果这是真的退出程序。我目前有这样的设计,所有输入都被归类为字符串,但是当我试图用数字等价值时,这显然会导致问题。
这是我当前版本的check函数和一个用户输入函数:
//Current add_employee function
void add_employee()
{
string emp_type = "";
bool exit_check;
cout << "Please select employee type. Enter 1 for Manager or 2 for Dockhand." << endl;
getline(cin, emp_type);
if(name.empty())
{
cout << "Cannot accept empty field as input. Please answer with 1 for Manager, or 2 for Dockhand." << endl;
add_employee();
}
exit_check = check_input(emp_type);
if(exit_check == true)
{
return;
}
if(emp_type == "1")
{
add_manager;
}
else if(emp_type == "2")
{
add_dockhand;
}
else
{
cout << "Sorry. Your input is invalid. Please answer with 1 for Manager, or 2 for Dockhand." << endl;
add_employee();
}
}
//Current check function
bool check_input(string input_var)
{
if(input_var == "exit")
{
return true;
}
else
{
return false;
}
}
至于我的问题。是否有一种相对简单的方法来保持我的代码结构,将输入作为int,然后将其转换为字符串以检查'exit',但如果exit_check为false,还将输入视为int?我正在考虑将输入分配给两个变量,但这感觉就像浪费代码一样。
如果有意义的话,请告诉我,我会将其编辑到OP中。
答案 0 :(得分:0)
将输入作为int,然后将其转换为字符串以检查&#39;退出&#39;
这是不可能的。如果您将输入读入int,则任何非数字输入都将失败,您将无法检查字符串&#39;退出&#39;。
您可以做的是将输入作为字符串添加到变量,比如input
,然后使用stoi
将其转换为int:
int emp_type = std::stoi(input);
顺便说一句,您可能希望通过引用获取check_input
的参数,以避免每次调用函数时都复制整个字符串:
bool check_input(string const& input_var)
答案 1 :(得分:0)