cin、cin.get()、cingetline()等函数的区别

                                          cin相关函数

一  cin 主要几个函数cin()、cin.get()、cin.getline()、cin.good()、cin.clear、                      cin.ignore;

1. cin------------->接受整型,字符,不接受enter space tab 遇到这些对结束符处理,并保      留在缓冲区。(从字符整型开始(而非enter)到E S T接受并保留在缓冲区)

2. cin.get()------->只接受字符char并且接受E S T,不接受整型int,有三种形式

     A.cin.get() :---->从 S T开始到E S T结束,不会丢弃E S T

    char c1, c2;

  cin.get(c1); //若输入 S T 就开始读取数据了,此时缓冲区没有E S T,所以c2            可以正常读取

  cin.get(c2);

  printf("%d,%d\n",c1,c2); //若输入SEE,输出3210

  cout<<c1<<"|"<<c2<<endl; // 打印两个字符,若输入E S T其中一个                            cin.getc1)就开始读取数据了,

总结:和cin()函数类似,不会丢弃EST,不同点是cin.get()从EST开始读取

  • cin.get(ch) : 和无参数的cin.get()函数一样、既ch = cin.get() = cin.get(ch)
  • cin.get(arrar_name ,array_szie) :--->可以接受小于size-1大小的字符串,实质也接受一个一个字符,从S T开始到E结束,自动丢弃E

   char a[20];

   cin.get(a, 10); //读取9个字符,并且把并且会丢弃enter

   cout<<a<<endl; //若输入Tab0123456789输出Tab012345678

   return 0;

总结:

   A 、cin.get(arrar_name ,array_szie)可以接受空格,到E结束,接受size-1个字符

         B 、如果输入size >= array_size(这个size必须小于数组给size)cin.get(arrar_name                 ,array_szie)该函数会将多出(size-1)的输入字符存放到缓冲区

                        char ch, a[20];

                        cin.get(a, 5);

                        cin>>ch;cout<<a<<endl;

                        cout<<(int)ch<<endl; //如输入12345,不会执行第二次cin的输入,原因                        是cin.geta,5)输出四个字符,把5保留到冲                        区,cin下次读取直接缓冲区的数据故输出12345

         Return 0;

 

3.cin.getline()-------------->cin.getline(参数)该函数有两种形式必须有参数,                               a.cin.getline(array_name, array_size,'字符(遇到该字符停止读取)')

        b.cin.getline(array_name,array_size)类似于cin .get(array_name,array_size)都丢               弃enter

总结:cin.getline():和cin.get()类似,都是从E S T开始读取,到E结束(非上述a情况),都自动丢弃Enter.

 

4.cin.good()------------>检查cin是否越界(异常),异常返回0,正常返回1

5.cin.clear()------------>清楚异常

  1. #include<iostream>  
  2. using namespace std;  
  3. int main ()  
  4. {  
  5. char ch, str[20];  
  6. cin.getline(str, 5);  
  7. cout<<"flag1:"<<cin.good()<<endl;   // 查看goodbit状态,即是否有异常  
  8. cin.clear();                        // 清除错误标志  
  9. cout<<"flag1:"<<cin.good()<<endl;   // 清除标志后再查看异常状态  
  10. cin>>ch;   
  11. cout<<"str:"<<str<<endl;  
  12. cout<<"ch :"<<ch<<endl;  
  13. return 0;  
  14. }  

 

6.cin.ignore(5,'字符')-------->忽略'字符',循环5次,循环中有'字符'既退出                     1. #include <iostream>  

      2. using namespace std; 

      3. int main ()  

      4. {  

      5. cin.ignore(5, 'a');

      6. return 0;  

      7. }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值