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