标题:cin.getline函数问题求助
只看楼主
bitzyh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-4-14
结帖率:100%
已结贴  问题点数:20 回复次数:4 
cin.getline函数问题求助
#include <iostream>
using namespace std;
void main()
{  
  char s1[20],s2[20];

  cin.getline(s1,5);

  cout<<s1<<endl;

  
  cin.getline(s2,5);

  cout<<s2<<endl;

}


输入:yuyuyuyuyuyu【换行】
输出:yuyu
      【换行】
问题:为什么s2的结果是换行,而不是yuyu
搜索更多相关主题的帖子: include namespace 
2013-05-29 22:56
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:605
专家分:2489
注 册:2009-4-8
得分:7 
按你的提供输入第一个cin.getline(s1,5);调用 cin.fail() == true;
清下标志状态就好了。cin.clear();
#include <iostream>
using namespace std;
int main()
{  
  char s1[20],s2[20];

  cin.getline(s1,5); //可能是因为输入的字符个数大于预期的字符个数,所以设置了 failbit

  cout<<s1<<endl;

  cin.clear();
  cin.getline(s2,5);

  cout<<s2<<endl;

}

迭代的是人,递归的是神。
2013-05-29 23:42
bitzyh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-4-14
得分:0 
以下是引用lintaoyn在2013-5-29 23:42:36的发言:

按你的提供输入第一个cin.getline(s1,5);调用 cin.fail() == true;
清下标志状态就好了。cin.clear();
#include  
using namespace std;
int main()
{   
  char s1[20],s2[20];
 
  cin.getline(s1,5); //可能是因为输入的字符个数大于预期的字符个数,所以设置了 failbit
 
  cout<
谢谢 我知道肯定是出错的 看结果就知道 我想知道的是为什么出错
2013-05-30 09:31
镜像
Rank: 2
等 级:论坛游民
帖 子:6
专家分:83
注 册:2013-5-27
得分:7 
1.首先你不知道getline(s1, 5)是怎么用的,当输入第5个字符时自动结束
2.getline遇到换行时结束且会返回换行
即你输入的前面就结束了,第二个s2相当于你输入的换行

冷静才能前进!........
2013-05-31 14:00
bitzyh
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-4-14
得分:0 
以下是引用镜像在2013-5-31 14:00:45的发言:

1.首先你不知道getline(s1, 5)是怎么用的,当输入第5个字符时自动结束
2.getline遇到换行时结束且会返回换行
即你输入的前面就结束了,第二个s2相当于你输入的换行
经过调试  不是你说的那么回事,总结出来 就一句话   无论怎样  cin.getline函数是必须要看见结束字符的,不管你限不限定字符数和结束字符
2013-06-01 14:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-412545-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.510758 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved