C++ 验证同一行上两个输入的第一个


string a, b;
cin >> a >> b;
if (a == "yes") break;
...

为什么这不能按照它看起来应该工作的方式工作?如果用户输入"是的,请"或"是",程序应该脱离它所在的任何循环,但事实并非如此。控制台仅打印换行符并等待。我在这里做错了什么?

第二个字符串b的读取不是可选的,因此如果您输入"yes"或任何其他单个单词,程序会阻止让您输入第二个单词。

操作流程如下:

  • 等待第一个单词进入a
  • 等待第二个单词进入b
  • 将第一个单词与"yes"进行比较

请注意,在b读数结束之前,比较不会开始。

如果要在简单"yes"上退出循环,请读取a,将其与"yes"进行比较,必要时中断,然后才读取b

cin >> a;
if (a == "yes") break;
cin >> b;

现在,如果循环没有退出,您既有a,又有b,并且您知道a不等于"yes"

目前:

string a, b;
cin >> a >> b;
if (a == "yes") break;
...

正确的方法如下。 当您同时输入 A 和 B 时,b 没有值。

string a, b;
cin >> a;
if (a == "yes") 
{
break;
}
cin >> b;

b 仍将"在同一条线上">

相关内容

最新更新