在使用cin输入时,有时需要使用异常的输入来结束cin的执行。
比如在一个数字输入的结尾处用一个字符作为结尾输入。
但是当涉及到多次的输入时,重新整理输入缓冲区就成为了必须要做的工作。
常用的循环输入语句:
while(!cin.fail())
{
//执行语句
}
输入失败后,将会导致failbit被置为1。因此导致 循环终止。
但是如果需要再次输入int数据,就需要清除failbit位并清空缓冲区。
用一下两条语句执行:
cin.clear();
cin.sync();
这样缓冲区就被清理干净,并可以正常等待输入。
而且需要注意的是,在我测试过程中发现,如果failbit被置位,将导致后面的cin语句无法执行。
比如在一个数字输入的结尾处用一个字符作为结尾输入。
但是当涉及到多次的输入时,重新整理输入缓冲区就成为了必须要做的工作。
常用的循环输入语句:
while(!cin.fail())
{
//执行语句
}
输入失败后,将会导致failbit被置为1。因此导致 循环终止。
但是如果需要再次输入int数据,就需要清除failbit位并清空缓冲区。
用一下两条语句执行:
cin.clear();
cin.sync();
这样缓冲区就被清理干净,并可以正常等待输入。
而且需要注意的是,在我测试过程中发现,如果failbit被置位,将导致后面的cin语句无法执行。
另外需要注意的是,由于在char类型变量和int类型变量存在隐式转换,所以cin可以在要求出入int时读取char数据。
但后果是int类型变量乱码,且failbit被置位。