牛客网C++输入输出的坑之 ----- while(cin>>n)

今天在做汽水瓶这题的时候,又遇到一个坑。
本来我的代码是这样的:
牛客网C++输入输出的坑之 ----- while(cin>>n)
因为用例一定会输入0作为结尾,所以我觉得没什么问题。但是超时了。这都能超时?我就怀疑人生了。

仔细比对后,发现正确写法应该是下面这样的
牛客网C++输入输出的坑之 ----- while(cin>>n)
也就是说,要首先检查cin>>n的状态,然后再检查输入的值,其中检查流的状态这一步,是不可以省略的。这是标准的做法,《C++ primer》中是这么说的:
牛客网C++输入输出的坑之 ----- while(cin>>n)
总之以后在任何地方都尽量检查一下cin的状态好了。这是一个很好的习惯。就本题而言,我认为是牛客后台的测试用例可能有问题。