c++将不同类型临时转换为字符串
C++ Converting Different Types to String Temporarily
如果这个问题有点啰嗦,我很抱歉。我会尽量保持简短而简洁。
我正在为入门级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_check为假,则输入仍然被认为是int ?我想把输入赋值给两个变量,但感觉像是浪费代码。
请让我知道,如果有什么是有意义的,我会编辑到op。
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基本上涵盖了如何做到这一点
将输入作为int型,然后将其转换为字符串以检查'exit'
这是不可能的。如果将输入读入int类型,则任何非数字输入都将失败,并且您将无法检查字符串'exit'。
你可以做的是把输入作为一个字符串到一个变量,比如input
,然后用stoi
把它转换成int:
int emp_type = std::stoi(input);
作为题外话,您可能希望通过引用来获取check_input
的参数,以避免在每次调用函数时复制整个字符串:
bool check_input(string const& input_var)
相关文章:
- wcstombs_s(),转换字符串的长度
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 无法转换字符串插入函数的参数
- 转换字符串向量:基于先前的值跳过元素
- 从中间器转换字符串不起作用,出了什么问题?
- 失败的证明转换字符串到枚举类
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 使用java jni时转换字符串类型
- 如何避免在转换字符串令牌流时重复istringstream构造
- 阿托伊未正确转换字符串
- C++,转换字符串,使连续下划线序列变为单个下划线
- 使用长算术转换字符串
- 转换字符串十进制数时的精度
- 将词法转换字符串提升为双精度
- 使用marshal_as函数转换字符串的性能
- C++不会从数据转换字符串
- 无论如何,在c++ /Qt中转换字符串到结构中的字段
- C++ 隐式类型转换字符串 -> int?
- 转换字符串到浮点数,c++实现
- 用于转换字符串大小写的函数