限制C++中的字符输入
Restricting character input in C++
我真的很好奇如何在计算器这样的程序中限制字符输入,有人能教我怎么做吗?我真的对此很陌生。如果有人回答,请你解释一下答案中的每一行代码。提前感谢。:)
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int choice;
double add, sub, mul, div, rem, square, power, v1, v2;
long double sine, cosine, tangent;
do{
cout << "Choose an operation." << endl << "n";
cout << "[1] Addition." << endl;
cout << "[2] Subtraction." << endl;
cout << "[3] Multiplication." << endl;
cout << "[4] Division." << endl;
cout << "[5] Exit." << endl;
cin >> choice;
while (choice < 1 || choice > 5){
cout << "Please Choose from 1 to 5" << endl;
cin >> choice;
}
if (choice == 1){
cout << "Please Enter 1st value: ";
cin >> v1;
cout << "Please Enter 2nd value: ";
cin >> v2;
add = v1 + v2;
cout << "The answer is: " << fixed << setprecision(2) << add << endl << endl;
}
else if (choice == 2){
cout << "Please Enter 1st value: ";
cin >> v1;
cout << "Please Enter 2nd value: ";
cin >> v2;
sub = v1 - v2;
cout << "The answer is: " << fixed << setprecision(2) << sub << endl << endl;
}
if (choice == 3){
cout << "Please Enter 1st value: ";
cin >> v1;
cout << "Please Enter 2nd value: ";
cin >> v2;
mul = v1 * v2;
cout << "The answer is: " << fixed << setprecision(2) << mul << endl << endl;
}
if (choice == 4){
cout << "Please Enter 1st value: ";
cin >> v1;
cout << "Please Enter 2nd value: ";
cin >> v2;
div = v1 / v2;
rem = fmod (v1,v2);
cout << "The answer is: " << fixed << setprecision(2) << div << " remainder " << rem << endl << endl;
}
if (choice == 5)
break;
}
while (choice != 5);
{
cout << endl << "Goodbye.";
}
return 0;
}
查看您正在使用的函数的文档。
简化代码:
double v1;
std::cin >> v1;
这是在尝试从std::cin
中提取double
,跳过前导空格。
如果提取失败——例如,因为某人输入的内容不是double
值的表示——则会写入一个零(由于C++11,以前该值保持不变),并且流上的故障位设置。
这可以检查并清除:
if ( std::cin.fail() )
{
// handle error
std::cin.clear();
}
实际上,clear()上的页面有一个功能齐全的示例,可以读取数字、检查故障并重复输入。
话虽如此,但我支持@Maikel的评论。如果你想把它超越实验阶段,你会想写一个真正的语法解析器,BoostSpirit是一个很好的选择。
相关文章:
- 如何忽略第一个字符输入后的所有内容
- 使用单个变量对字符输入进行计数
- 确定用户字符输入 C++ 的结束
- 将单个字符串/字符输入串行监视器
- 如何将字符输入限制为仅获取一个字符串"cin"
- C++:使用 fgets() 读取字符输入时出错
- 如何拒绝 cin 中的字符输入并定义最小和最大整数值
- C++ 字符输入仅输出第一个字母
- 限制 2D 数组中的字符输入
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- C++常量字符*输入
- 使用带符号字符输入的isalnum-Visual C++
- 限制C++中的字符输入
- 字符输入问题
- 字符** + 输入" "字符
- 文件 I/O 操作 - 奇怪的字符输入
- 如何在不暂停循环的情况下使用字符输入停止循环
- C++ - 对'if'语句使用特定字符输入
- 使用 "NEW" 获取字符输入和给定输出,并从用户那里获取字符串长度
- 正确的逐个字符输入