【发布时间】:2015-10-21 09:24:39
【问题描述】:
如果这个问题有点啰嗦,我深表歉意。我会尽量保持简短但简洁。
我正在为入门级 C++ 课程构建一个主要程序,我正在为仓库创建一个模拟版本的员工管理。一般的形式是要求用户输入以选择员工类型,然后根据输入要求输入与该员工类型相关的员工详细信息。
因此,有些函数接受 int、float、string 和 char 形式的输入。我有一个单独的较小的函数来检查“退出”作为输入,如果这是真的退出程序。我目前有这样的设计,以便所有输入都被归类为字符串,但这显然会导致稍后当我尝试将数值等同起来时出现问题。
这是我当前版本的检查功能和用户输入功能之一:
//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_check 为假,输入仍被视为 int?我正在考虑将输入分配给两个变量,但这感觉像是在浪费代码。
请让我知道是否有意义,我会将其编辑到 OP 中。
【问题讨论】:
-
不太清楚你的意思是什么?整个程序远不止这些,但是当两个函数足以说明我的意思时,将所有这些复制到问题中是没有意义的。
-
为什么要使用字符串来检查员工类型?您可以直接比较 int 类型并为退出分配一个特定的整数。
-
@Raul 这就是我最初的设计,但后来我无法获得 check_input 函数来检查输入的“退出”。我试图设置它,以便在每个输入阶段之后都可以使用 check_input 函数,这样我就不必每次都复制代码。并非所有用户输入都属于同一类型。