又一个“输入”问题 (很容易拿分哦!)

shishiXP 2003-04-13 06:51:29
请问cin.get()怎么用?
例:
char g[10];
cin.get(g,10);
cout<<"\ng1="<<g;
cin.get(g,10);
cout<<"\ng2="<<g;
为什么第二次就不能输入了??帮我改改。谢谢。

顺便请教一下cin.ignore()有什么用?怎么用?
...全文
29 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shishiXP 2003-04-14
  • 打赏
  • 举报
回复
经过两位指导,和反复试验,我基本知道了。

多谢!

加分!加分!一人40
bullet2003 2003-04-14
  • 打赏
  • 举报
回复
up
langzi8818 2003-04-14
  • 打赏
  • 举报
回复
用getline()吧,
你用get()的时候,他遇到输入流的分隔符(一般是'\n')时就停止。如果用同样的分隔符在调用一次get(),他会立即返回而不带任何输入。
所以你在运行一个get()(不带任何参数的),他返回下一个字符,所以就把分隔符就被扔掉了,。cin.ignore()也一样,他是一个忽略函数,他的第一个参数(默认是1)就是你忽略的字符个数,第二个是他退出处的字符(默认是EOF)
shishiXP 2003-04-14
  • 打赏
  • 举报
回复
能说说cin.get()怎么运作的吗?怎么会出现这种现象?

cin.ignore又是干什么的?
langzi8818 2003-04-13
  • 打赏
  • 举报
回复
char g[10];
cin.get(g,10);
cout<<"\ng1="<<g;
cin,get();(或cin.ignore)就可以了
cin.get(g,10);
cout<<"\ng2="<<g;
vosbtis 2003-04-13
  • 打赏
  • 举报
回复
修改如下:
char g[10];
cin.get(g,sizeof(g));
cout<<"g1="<<g<<'\n';
while(cin.get()!='\n'); //ignore until to '\n';
cin.get(g,sizeof(g));
cout<<"\ng2="<<g'\n';

注如果g1,g2可以一次性输入的话,应如下:
char g[10]={0};
cin.get(g,sizeof(g));
cout<<"g1="<<g<<'\n';
g[0] = cin.get();
if(g[0]!='\n')
cin.get(g+1,sizeof(g)-1);
else
cin.get(g,sizeof(g));
cout<<"g2="<<g<<'\n';
zhouhu 2003-04-13
  • 打赏
  • 举报
回复
up
qhgary 2003-04-13
  • 打赏
  • 举报
回复
gz

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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