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

时间:2015-10-21 09:24:40

标签: c++ string getline

如果这个问题有点冗长,我道歉。我会尽量简短但简洁。

我正在为入门级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中。

2 个答案:

答案 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)

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函数。

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