为什么使用cin之后~ cin.getline就好像失效了?

raeck 2004-11-19 01:44:45
int main ()
{
float Length;
const int NAME_LEN = 25;
const int DATE_LEN = 25;
char Name[NAME_LEN];
char Date[DATE_LEN];

cin.getline(Name, NAME_LEN);
cin >> Length;
cin.getline(Date, DATE_LEN);
}
就像上面的程序~ 第一个个cin.getline能用~ 第二个就不能用了~
...全文
307 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
raeck 2004-11-19
  • 打赏
  • 举报
回复
ok~~~谢了~ 各位
zyk7069 2004-11-19
  • 打赏
  • 举报
回复
cin.get()的功能就是读入空行。
zyk7069 2004-11-19
  • 打赏
  • 举报
回复
int main ()
{
char Length;
const int NAME_LEN = 25;
const int DATE_LEN = 25;
char Name[NAME_LEN];
char Date[DATE_LEN];

cin.ignore( 10, '\n' );

cin.getline(Name, NAME_LEN);//读入了行,并将回车符换成空值符存入Name中。
cin >> Length;//读入数值,但将换行符留入队列,因此下一个cin.getline()将读入空行
cin.getline(Date, DATE_LEN);//这里的cin.getline()读入了空行。

system("pause");
return 0;
}

因此,此程序要将cin>>Length修改为(cin>>Length).get(),即可正常工作。
或修改为
cin>>Length;
cin.get();
也可正常工作,楼主可以试试。
yuanye2008 2004-11-19
  • 打赏
  • 举报
回复
int main ()
{
char Length;
const int NAME_LEN = 25;
const int DATE_LEN = 25;
char Name[NAME_LEN];
char Date[DATE_LEN];

cin.ignore( 10, '\n' );

cin.getline(Name, NAME_LEN);
cin >> Length;
cin.getline(Date, DATE_LEN);

system("pause");
return 0;
}
spider_xm 2004-11-19
  • 打赏
  • 举报
回复
可能是第二个cin后面输入的回车造成的,好像有个ignore什么之类的可以解决这个问题,
高手解答一下嘛。
raeck 2004-11-19
  • 打赏
  • 举报
回复
我按getline cin getline 这个顺序排是要说明getline在cin后不能用,我的程序里面是在最后才getline的~ 中途有好多cin·所以~~~~ 只好等高手来回答· 我也觉得是istream的问题
dragonzxh 2004-11-19
  • 打赏
  • 举报
回复
调整顺序cin.getline(Name, NAME_LEN);

cin.getline(Date, DATE_LEN);

cin >> Length;

似乎和istream的缓冲区有关,等高手回答
raeck 2004-11-19
  • 打赏
  • 举报
回复
up
raeck 2004-11-19
  • 打赏
  • 举报
回复
我的意思是第一个能够用~ 当输入完cin那个length之后回车~ 程序就结束了~ 好像跳过了第二个getline~
dragonzxh 2004-11-19
  • 打赏
  • 举报
回复
第一个能用?

没初始化怎么geline啊?

64,662

社区成员

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

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