getline两次调用输出不正常

阿七-萌 2016-04-03 10:53:00
#include<iostream>
int main()
{
using namespace std;
const int Artsize=20;
char name[Artsize];
char dessert[Artsize];

cout<<"Enter your name: \n";
//cin.getline(name,Artsize);
cout<<"Enter your favorite dessert: \n";
cin.getline(dessert,Artsize);
cout<<"I have some delicious "<<dessert;
cout<<" for you "<<name<<".\n";
return 0;
}
大家好,新手请帮忙。
第二次输入字符串,按enter键后,调试串口就关闭了,后面的输出没了,为什么

...全文
181 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿七-萌 2016-04-04
  • 打赏
  • 举报
回复
OK非常感谢
小灸舞 2016-04-04
  • 打赏
  • 举报
回复
它不是不显示cout后的内容,是你程序正常退出了所以你来不及看到
楼主不要直接F5,改成ctrl+F5就能看到
一般我们加getchar(),是为了等待输入一个字符,所以起到暂停的作用(前提是输入缓冲区里是空的,回车也不能有)
否则的话getchar()会直接读取遗留的字符,从而继续执行之后的代码,所以有些人喜欢用system("pause")
楼上说getchar()把换行符吃掉了我也是醉了,getline会直接读到回车,并且丢弃掉回车符的
阿七-萌 2016-04-04
  • 打赏
  • 举报
回复
是编译器的原因吗
阿七-萌 2016-04-04
  • 打赏
  • 举报
回复
请问,getchar()起暂停作用怎么解释?getline()不是抽取并丢掉换行符吗,想不明白为什么不显示cout的内容就退出
bie_ren 2016-04-04
  • 打赏
  • 举报
回复
好吧 上面我误解了 楼上说加getchar()起到的作用是暂停作用 楼主可以加system("pause"); 有些编译器是不带暂停的 有些编译器是自动带暂停的
bie_ren 2016-04-04
  • 打赏
  • 举报
回复
因为getline()读取的是换行符前面的字符,但是不包括换行符,so,你的换行符是还存在缓存中的,楼上说加一个getchar()有效,那是因为getchar()把换行符吃掉了
阿七-萌 2016-04-03
  • 打赏
  • 举报
回复
就是为什么后面的cout输出不显示接退出了
旧剑鞘 2016-04-03
  • 打赏
  • 举报
回复
引用 2 楼 u014112507 的回复:
加了getchar()有用,非常感谢;能请问下,它为什么退出吗
你问的这个有点难,F5是调试模式,运行完了就退出了~~
阿七-萌 2016-04-03
  • 打赏
  • 举报
回复
加了getchar()有用,非常感谢;能请问下,它为什么退出吗
旧剑鞘 2016-04-03
  • 打赏
  • 举报
回复
后边的输出有,是你看不到。用Ctrl + F5 试试。 或者在return 0;之前加上一句 getchar(); 可以让你看到输出结果再退出。

64,641

社区成员

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

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