关于cin,cin.get()和cin.getline() 的区别

pause123 2009-05-11 11:43:34
cin,cin.get()和cin.getline() 的区别? 要详细...谢谢了!
...全文
133 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pause123 2009-05-12
  • 打赏
  • 举报
回复
谢谢了~
liliangbao 2009-05-11
  • 打赏
  • 举报
回复
昨天刚刚恢复:

cin会忽略空白符即:空格、换行、制表符直到遇到非空白符才将保存流数据,所以你使用cin永远读不到空白符~

cin.get()和cin.getline()是什么字符都读入除了回车符,使用他们就可以读入空格和制表符了

cin.get()和cin.getline()区别:
1.当正常读入时,即读入的串长度小于他们允许的长度时,
cin.get()不读取回车符,这样回车符仍然在缓冲区中,而cin.getline()读取回车符但不存储,这样缓冲区中没有回车符了~

2.当无读入时,即只输入回车符
cin.get()将设置failbit状态位表示读取失败,而cin.getline()不设置failbit,因为他读取了回车符但是不保存~
如:第一种情况不进入循环,读取失败,返回false退出循环~
buf[80] = {0};
while(cin.get(buf,80))//只输入超过回车符符,将不进入循环~
{
cout<<"进入"<<endl;
}
char buf[80] = {0};
while(cin.getline(buf,80))
{
cout<<"进入"<<endl;
}


3.当输入串长大于他们的预输入的长度时,
cin.get()不设置failbit位,而cin.getline()设置failbit位,但是这种情况和编译器有关~
char buf[8] = {0};
while(cin.getline(buf,8))//输入超过8的字符,将不进入循环~
{
cout<<"进入"<<endl;
}

pause123 2009-05-11
  • 打赏
  • 举报
回复
自己顶!

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧