parashift 上的C++ FAQ使用类似于以下内容的内容:
while (cout << "Enter an integer: " && !(cin >> foo))
{
cin.clear();
//feel free to replace this with just (80, '\n') for my point
cin.ignore (numeric_limits<streamsize>::max(), '\n');
}
然而cin.ignore (...)
,似乎没有必要。为什么我不能直接使用cin.sync()
?它更短,不需要长度。它也更加通用,因为无论输入缓冲区中是否有任何字符,它都将以相同的方式工作。我已经在与我使用的相同循环中测试过一次,ignore
并且它的工作方式相同。然而,似乎每个涉及此类输入验证的示例都使用ignore
而不是sync
.
ignore
当有更简单的替代方案时,使用的原因是什么(如果有的话) ?
如果重要:
Windows
GCC
MinGW