cin详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mengxiangjia_linxi/article/details/78166087

cin是C++编程语言中的标准输入流对象,即istream类的对象。cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。
此外,cout是流的对象,即ostream类的对象,cerr是标准错误输出流的对象,也是ostream 类的对象。这里的标准输出指的是终端键盘,标准错误输出指的是终端的屏幕。

在理解cin功能时,不得不提标准输入缓冲区。当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符\n也会被存储在cin的缓冲区中并且被当成一个字符来计算! 比如我们在键盘上敲下了123456这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是7 ,而不是6。

cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发cin的成员函数去读取数据。

C++输入cin详解
http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html
http://blog.csdn.net/k346k346/article/details/48213811

cin.clear()、cin.sync()和cin.ignor()的用法
http://blog.sina.com.cn/s/blog_8d3652760100wl9r.html

 cin.clear();//是用来更改cin的状态标示符的。
 cin.sync(); //是用来清除缓存区的数据流的。这两个要联合起来使用

 cin.ignore(a,ch);//从输入流(cin)中提取字符ch,然后忽略(ignore)
 //如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函数执行终止;否则,它继续等待。
 //它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。

C++捕获cin输入错误类型值的问题
http://blog.csdn.net/o1101574955/article/details/51921246

C++捕获cin输入错误实例:

int temp;  
char ch; 

while(1){ //这里可以设置一下最多输出多少次就退出大while循环  
        cin>>temp;  
        try{  
            if(cin.fail())//这个只接收数字(正或者负),如出现非数字就提示重新输入,注意temp是int型的   
                throw 1;  
        }  
        catch(int){  
            cin.clear();  
            cin.sync();  
            cout<<"非数字"<<endl;  
            continue;  
        }  
        cout<<temp<<endl;  
    } 


    //2 
    /*while(cin>>ch){ 
        if((int)ch>48 && (int)ch<57) 
            cout<<"数字:"<<ch-48<<endl; 
        else 
            cout<<"非数字:"<<ch<<endl; 
    }*/ 

猜你喜欢

转载自blog.csdn.net/mengxiangjia_linxi/article/details/78166087
cin
今日推荐