注册 登录
编程论坛 C++教室

cin.getline函数问题求助

bitzyh 发布于 2013-05-29 22:56, 588 次点击
#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
4 回复
#2
lintaoyn2013-05-29 23:42
按你的提供输入第一个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;

}
#3
bitzyh2013-05-30 09:31
以下是引用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<
谢谢 我知道肯定是出错的 看结果就知道 我想知道的是为什么出错
#4
镜像2013-05-31 14:00
1.首先你不知道getline(s1, 5)是怎么用的,当输入第5个字符时自动结束
2.getline遇到换行时结束且会返回换行
即你输入的前面就结束了,第二个s2相当于你输入的换行
#5
bitzyh2013-06-01 14:05
以下是引用镜像在2013-5-31 14:00:45的发言:

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