cin.get(),cin.getline()

cin.get(array_name, Arsize)是用来读取字符串的,可以接受空格字符,遇到Enter结束输入,按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。程序6

using namespacestd;  
int main ()
{  
       char a[20];  
       cin.get(a, 10);  
       cout<<a<<endl;  
       return 0;
}

测试一输入: abc def[Enter] 输出: abc def 【分析】说明该函数输入字符串时可以接受空格。   测试二输入: 1234567890[Enter] 输出: 123456789 【分析】输入超长,则按需要的长度取数据。


using namespacestd;  
int main (){  
       char ch, a[20];  
       cin.get(a, 5);  
       cin>>ch;  
       cout<<a<<endl;  
       cout<<(int)ch<<endl;  
       return 0;
}


测试一输入:12345[Enter]输出:123453【分析】第一次输入超长,字符串按长度取了"1234",而'5'仍残留在缓冲区中,所以第二次输入字符没有从键盘读入,而是直接取了'5',所以打印的ASCII值是53('5'的ASCII值)。 测试二输入:1234[Enter]a[Enter]输出:123497【分析】第二次输入有效,说明该函数把第一次输入后的Enter丢弃了!


二、cin.getline()

cin.getline()与 cin.get(array_name,Arsize)的读取方式差不多,以Enter结束,可以接受空格字符。按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。但是这两个函数是有区别的:cin.get(array_name, Arsize)当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。但是cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。


#include <iostream>  
using namespace std;  
int main (){  
       charch, a[20];  
       cin.getline(a,5);  
       cin>>ch;  
       cout<<a<<endl;  
       cout<<(int)ch<<endl;  
       return0;
}
测试输入: 12345[Enter] 输出: 1234-52

【分析】与cin.get(array_name,Arsize)的例程比较会发现,这里的ch并没有读取缓冲区中的5,而是返回了-52,这里其实cin>>ch语句没有执行,是因为cin出错了!




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值