C++ 临时将不同类型转换为字符串

C++ Converting Different Types to String Temporarily

如果这个问题有点啰嗦,我深表歉意。我会尽量保持简短。

我正在为入门级 C++ 课程构建一个主要程序,我正在为仓库创建员工管理的模拟版本。一般的形式是要求用户输入select员工的类型,然后,根据输入,然后要求用户输入与该员工类型相关的员工详细信息。

因此,有些函数接受输入为 int、float、string 和 char。我有一个单独的较小的函数,用于检查 'exit' 作为输入,如果为真,则退出程序。我目前有这样的设计,以便所有输入都被归类为字符串,但这显然会在以后尝试用数字等同值时引起问题。

这是我当前版本的检查功能和用户输入功能之一:

//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 是假的?我正在考虑将输入分配给两个变量,但这感觉就像是在浪费代码。

请告诉我是否有任何意义,我会将其编辑到 OP 中。

taking the input as an int, then converting it to a string to check for 'exit'

那是不可能的。如果将输入读入 int,任何非数字输入都将失败,并且您将无法检查字符串 'exit'.

你可以做的是将输入作为变量的字符串,比如 input,然后使用 stoi:

将其转换为 int
int emp_type = std::stoi(input);

顺便说一句,您可能希望通过引用获取 check_input 的参数,以避免每次调用该函数时都复制整个字符串:

bool check_input(string const& input_var)

getline(cin, emp_type);将从用户那里获取一个字符串。您在该代码的任何地方都没有得到 int 作为输入。

您可以通过更改以下内容来简化此操作:

 exit_check = check_input(emp_type);
        if(exit_check == true)
        {
                return;
        }

if(emp_type.compare("exit") == 0)
            {
                    return;
            }

检查字符串是否相等。 (有关该运算符的详细信息,请参阅 compare()。)并删除 check_input 函数。

如果您需要来自输入的整数,那么 zenith 几乎涵盖了如何做到这一点。