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

时间:2017-02-09 20:57:25

标签: c++ cin

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

为什么它看起来不起作用?如果用户输入"是,请"或"是"程序应该突破它所处的循环,但事实并非如此。控制台只打印换行并等待。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

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

操作流程如下:

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

请注意,只有在b的读数结束后才会开始比较。

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

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

现在,如果循环没有退出,则同时拥有ab,并且您知道a不等于"yes"

答案 1 :(得分:0)

目前:

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仍将“在同一条线上”