计算器读取数字和拼写数字的问题

  • 本文关键字:数字 问题 读取 计算器 c++
  • 更新时间 :
  • 英文 :


我正在使用Bjarne Stroustrup的初学者书籍,我在这个练习中遇到了一些麻烦:修改习题5中的"迷你计算器",使其接受(仅)以数字形式书写或拼写的个位数。首先,只有数字不工作,所以我剪掉了转换字符串的部分,以尝试如果它不以某种方式干扰。它确实开始工作了,但是当我把那部分代码粘贴回来时,结果显示数字仍然与拼写单词相反……有人知道为什么会这样吗?

string a, b; char op; int val1=0, val2=0;
cout << "Enter a calculation:n";
vector<string> numbers = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
cin >> a >> op >> b;
for(int i=0; i<numbers.size(); i++)
{
if(a==numbers[i])
{
val1 = i;
}
if(a!=numbers[i])
{
stringstream ss;
ss << a;
ss >> val1;
}
}
for(int j=0; j<numbers.size(); j++)
{
if(b==numbers[j])
{
val2 = j;
}
if(b!=numbers[j])
{
stringstream ss;
ss << b;
ss >> val2;
}
}


if(op=='+')
{
cout << "The sum of " << a << " and " << b << " equals " << val1+val2 << 'n';
}

问题是代码在找到匹配项后不会停止在数字中查找匹配项。

这样,如果一个数字作为字符串输入,第二个if块(尝试使用sstream将字符串转换为数字的块)总是在找到匹配项后的下一次迭代中执行,因此val1被设置为0。

val1 = i;val2 = j;之后添加一个break语句来退出for循环可以解决这个问题。

最新更新