亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教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 關注
  • 306 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號