cin专题

int main()
{
    char ch;

   

    //运行程序,直接回车,无论执行下面哪一句代码后发现ch的值是10,即换行符\n  (下面两句代码值能执行一句对比结果)

    cin.get(ch);
    //ch=cin.get();
}


 

 

int main()
{
    char str[10],ch;
    cin.get(str,10);
     //运行程序,直接回车(下面两句代码值能执行一句对比结果)

    //cin.get(ch);    //若执行这一句,执行完以后发现ch的值为-52,即未初始化

    ch=cin.get(); //若执行这一句,执行完以后发现ch的值为-1,即输入流已经读取到流尾

   /*

   之所以出现上面的情况,是因为使用cin.get(str,10)读取空行后将设置失效位(即cin.fail()为1,cin.eof()仍未0),使接下来的输入被阻断

   */

}

 

 

int main()
{
    char str[10],ch;
    cin.get(str,10);
    cin.clear();//如果加上这一句,发现下面两句任何一句执行以后,ch的值为10,即'\n',这是因为cin.clear()恢复失效位。

     //运行程序,直接回车(下面两句代码值能执行一句对比结果)

    //cin.get(ch);    //若执行这一句,执行完以后发现ch的值为-52,即未初始化

    ch=cin.get(); //若执行这一句,执行完以后发现ch的值为-1,即输入流已经读取到流尾

   

}  

 第一种

char str1[5];
cin.getline(str1,5); //输入5个或5个以上的字符,下面输出0,1  
cout<<cin.eof()<<","<<cin.fail()<<endl; 

 

第二种

 

char str1[5];
cin.get(str1,5); //输入回车,下面输出0,1  
cout<<cin.eof()<<","<<cin.fail()<<endl;

 

 

下面一段代码:

char str1[5],str2[5],ch;
    cin.getline(str1,5);//输入超过4个字符,回车,再输入4个字符,发现运行结果正确。
    //下面5行代码是清空缓冲区的
    if(cin.fail())
    {
        cin.clear();
    }
    while((ch=cin.get())!='\n'&&ch!=EOF);

    cin.getline(str2,5);
    cout<<str1<<","<<str2<<endl;
    return 0; 

 

 

 

posted @ 2010-10-11 21:12  再快一点  阅读(391)  评论(0编辑  收藏  举报