【发布时间】:2012-04-11 00:03:08
【问题描述】:
C++ FAQ over at parashift 使用类似于以下内容:
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 背后的原因是什么(如果有的话)?
如果重要的话:
窗户
海合会
MinGW
【问题讨论】: