关于cin

ios::cin.sync() ///清空缓冲区

ios::cin.rdstate() ///0表示正常输入数据类型,4表示发生错误

#include <iostream>
int main()
{
    int x;
    std::cin>>x;//1 2
    std::cin.sync();
    int y;
    std::cin>>y;//3
    std::cout<<x<<" "<<y;//1 3
}

ios::cin.clear()///默认参数为0,即无错误正常输入,当发生错误如输入字母时,其内部标识符变为fail,即错误。用cin.clear()可以使其标识符变为0再配合cin.sync()清空缓冲区使数据正常读入否则会死循环。

#include <iostream>
int main()
{
    int x;
    while(true){
        std::cin>>x;
        if(std::cin.fail()){
            std::cout<<"input error!\n";
            std::cin.clear();
            std::cin.sync();///顺序不能反!
        }
        else{
            std::cout<<x<<"\n";
        }
    }
}

 

posted @ 2021-06-15 17:33  Acception  阅读(71)  评论(0)    收藏  举报