从cin读取不同类型的输入
reading different types of input from cin
当处理从cin读取不同类型的输入时,我最初认为开始读取时,就好像输入是一个整数一样。如果失败,请将其作为字符串读取。
在我尝试读取诸如"+"、"-"之类的运算符之前,它运行良好。在输入if(!fail)后,它会要求另一个输入,就好像输入(运算符,如"+"、"-")消失了一样。然而,输入甚至不应该被读入。
这是代码:
void RPNCalc::run()
{
int numInput; bool boolInput = false; string stringInput; char charInput;
while (stringInput != "quit")
{
cin >> numInput;
if (!cin)
{
cout << "not an int" << endl;
cin.clear();
cin >> stringInput;
cout << stringInput << endl;
readNonNumInput(stringInput, boolInput);
}
else
{
Datum temp = Datum(numInput);
calculator.push(temp);
}
}
}
当将运算符读取到cin中时,在将其作为整数读取失败后,它会以某种方式丢失缓冲区中的运算符。例如,如果我输入一个"+",它将无法作为整数读取,因此它将打印语句"not an int"。但是,由于缓冲区中的"+"以某种方式丢失,因此没有任何内容可以读取到stringInput中。而对于其他字符串输入,它不能作为整数读取,并且该字符串仍然存在于缓冲区中,稍后可以读取到stringInput中。
这就是我对这里发生的事情的理解。但我可能错了。
始终读取一个字符串,然后尝试转换。"+/-"在您尝试读取数字时被消耗,因为它们可能是数字的字符串表示的一部分
相关文章:
- 在一个模板函数中,若输入的类型是enum类,我该如何使用std::underlying_type
- 在C++中,我如何接受不同于同一行的用户输入
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 我想知道为什么"std::unique_ptr<int> foo(新 int)"是合法的,因为"std::<int>unique_ptr"要求输入参数类型应该是"int"?
- 输入数据类型检查循环未按预期工作 (C++)
- 输入层类型:图像数据在窗口咖啡cpp中给出空白输出
- 确定C++中用户输入的类型,而无需任何标准库函数
- 输入参数类型"常量双 *&"是什么意思?
- C++ 使用函数模板查找任何输入数据类型的中间值
- 自动标准最大输入的类型扣除失败 = 标准::最大值<int>;
- 如何在c++中对命令行输入进行类型检查
- 是否有一种仅使用基本概念检查输入数据类型的方法
- 获取类定义中可调用对象的输入/输出类型
- 获取可调用对象的输入/输出类型
- c++输入char类型,输出int类型
- 如何处理信号处理库的输入/输出类型
- 对于C++模板,有没有办法找到"valid"输入的类型?
- 从文件中输入不同类型的数据,并且不使用向量
- 检查c++中输入的类型