int n;
do
{
cout << "What height should the pyramid be? ";
cin >> n;
} while (n <= 1 || n > 23);
因此,如您所见,它只能取0到24之间的值,这很好用。但是,如果输入一个非常大的值,它将无限重复。有没有一种方法可以防止在输入阶段滥用该信息?
(附带说明,有人知道为什么“ n <0”在这种情况下允许0作为值吗?)
答案 0 :(得分:1)
如果输入数字太大而无法存储在failbit
中,则会设置cin
的{{1}},然后跟随int
总是失败。您可以使用cin >> n
清除cin.clear()
之前的failbit
:
cin >> n