为了账号安全,请及时绑定邮箱和手机立即绑定

请教c++ 用cin.get()获取数据的问题,求大佬~

请教c++ 用cin.get()获取数据的问题,求大佬~

心有法竹 2021-12-09 11:07:31
函数如下,输入形式“1 2 3 1 2 3 1 3”,要求分辨输入的每个字符,如果是数字则在链表上新建一个节点,并将其作为节点的值。但是调用该函数,然后引用链表的值却老提示内存不可写,请问这函数哪里错了?void init(page * head){ char c;page * h=head;cout<<"输入页面号的引用串的序列:";while((c=cin.get())!='\n'){ if(c>='0'&&c<='9'){h=new page;h->i=int(c-48);h=h->next;}}h=null;return;}机构体得定义:typedef struct Page{int i;struct Page * next;}page;
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

cin.get()是用来读取多余回车符号的。
保留cin.get()的时候,程序执行流程如下:
你输入的google+回车,被getline(cin, titles[i])读掉,然后你输入的10被cin >> ratings[i]读掉,10后面的回车被cin.get()读掉。然后正常进入下一次循环。
去掉cin.get()之后,流程如下:
google+回车,被getline读取。10被cin >> ratings[i]读取。10后面的回车,被下次循环里的getline()读取,从这里开始就出错了。

查看完整回答
反对 回复 2021-12-13
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

void init(page *& head)
{
char c;
page * h=head;
if (null == h) {
h = new page;
head = h;
}
cout<<"输入页面号的引用串的序列:";
while((c=cin.get())!='\n')
{
if(c>='0'&&c<='9')
{
h->next = new page;
h = h->next;
h->i = int(c-48);
}
}
h->next = null;
return;
}


查看完整回答
反对 回复 2021-12-13
  • 2 回答
  • 0 关注
  • 215 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信