char Oprt;
cout << "\nPlease enter first number: ";
cin >> num1;
cout << "Please enter second number: ";
cin >> num2;
cout << "Now please enter operator: ";
cin >> Oprt;
while (Oprt != '+' && Oprt != '-' && Oprt != '*' && Oprt != '/')
{
    cout << "Wrong Operator please enter again: ";
    cin >> Oprt;
}

当用户输入诸如“ffsd”之类的内容作为输入时,循环循环的次数与用户所写字符的次数相同,但是我想要的是我的程序仅读取第一个符号,而忽略其余符号。

最佳答案

您在这里有两种有效的方法:

  • 使用cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n')可以忽略所有字符,包括'\n'
  • 使用istream::getline读取整个std::string,然后在字符串不为空的情况下获取初始字符。

  • 在这两种情况下,您都需要在进入循环之前忽略'\n',因为cin >> num2不会从输入流中删除'\n'

    08-16 02:03