我的程序输入有问题。它应该输入一个数学表达式,例如( x + 3 + ax - 5)
。所有物品均由白色空间隔开。
我处理这个的方式:首先我尝试用cin >> number
读取整数。如果失败了,我会尝试读取一系列字符。然后我检查这是否是一个运算符(+,-,*,/,( or )
) - 如果不是,那么这必须是一个变量。
我遇到的问题是加号和减号的迹象。在读取整数时,cin
似乎不会在读取+或 - 时打印错误。有没有办法以我想要的方式完成这项工作?
在此先感谢,这是我的代码片段:
int number; char * signs = new char[3]; char signsBeginning[3] = "aa";
signs = signsBeginning;
while(#endexpression){
cin >> number;
if(!cin){
//not a number
cin.clear();
cin >> signs;
//handling the input
}else{
//number
}
}
编辑:忘记添加:我不能使用字符串。
答案 0 :(得分:2)
您是否可以使用std::getline()
读取整个字符串,然后解析它?
std::string line;
std::getline(std::cin, line);
// Parse the read line ...
答案 1 :(得分:1)
如果数字输入失败,输入文件位置可能已增加,因此您无法返回。您可能需要建立自己的号码。
由于您不允许使用std::string
,我建议您阅读一个字符,处理该字符然后阅读另一个字符。
您可以通过将字符转换为内部表示形式,将现有数字乘以10并添加新的"数字"来构建整数:
char c;
cin >> c;
if (isdigit(c))
{
unsigned int digit = c - '0';
number = number * 10 + digit;
}