最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

與string類有關(guān)的cin&getline(cin,string)輸入輸出實例分析與反思

2023-03-25 21:52 作者:墨客本人  | 我要投稿

前言:

主要是寫代碼的時候有幾個不清楚的地方,一個一個試了一下,并用文字分析了下(腦袋有點暈,寫出來不容易出錯)。又截了圖,那就順便發(fā)出來了吧hhhh。

正文:

本文的行文邏輯就是分析代碼(using example),搞懂輸入和輸出是怎么對應(yīng)上的,最后給出防止問題產(chǎn)生的方法和知識點總結(jié)。

example1(本文用 ’*代替空格,便于辨認)

code1.輸入:123*sd\n

注意cin、getline的順序。

example2

code2.輸入:123*ad\nasd\n

code1和2只有cin和getline的順序變動了一下,結(jié)果也很好理解。(不解釋啦)

然后問題其實和下面的幾個代碼有關(guān)。

example3(和example的code一樣,但輸入不同)

code1.輸入:12\n

是的沒錯,你敲完\n(也就是回車),程序就結(jié)束了。

!?。∫簿褪钦f先用cin再用getline會出現(xiàn)問題。

解釋:cin遇到空格或\n結(jié)束會語句,同樣的,getline遇到\n會結(jié)束語句。

流程:輸入12\n后,cin讀取12,cin讀取\n,cin停止(\n并沒有消失)。getline讀取\n,getline停止。

為了防止example3這種情況的出現(xiàn),我們需要加一行g(shù)etchar();具體見下文代碼。

example4

code.3輸入:123\nabc\n

很正常吧?輸入完123回車,在輸入abc。輸出也很normal。

解釋:

輸入完123后,理所當然的想用回車來結(jié)束輸入,于是cin結(jié)束了(\n仍然存在),緊接著getchar讀取了\n(\n消失了?。缓骻etline并沒有看到\n于是讀取了abc。

example5(code3,輸入和example3的輸入類似)

code3.輸入:123*abc\n

可以和example3不見getchar的代碼進行對比,效果拔群!

不論怎么輸入都會得到想要的結(jié)果。

解釋:

當輸入完123后輸入空格時cin讀取到空格結(jié)束,同時空格本身不會消失,然后空格被getchar讀取,接著到getline讀?。ㄗx取了abc)。

什么?這些分析和改進有什么dia用?下面是我寫題涉及到的部分代碼,主要是紅框內(nèi)容。

問題代碼
修改:添加getchar();

拿下??!

此圖對本文沒有任何意義,但讓我很爽。

結(jié)尾:

稍微總結(jié)一下

  1. cin遇到空格或回車結(jié)束,會保留遇到的空格或回車

  2. getline(cin,string)遇到回車停止。(人家叫g(shù)etline,讀取一行(line),很合理吧)

  3. getchar()讀取一個字符(當然包括空格和\n了)

  4. cin緊接著getline會出bug,兩者間需要添加getchar()。


與string類有關(guān)的cin&getline(cin,string)輸入輸出實例分析與反思的評論 (共 條)

分享到微博請遵守國家法律
垫江县| 彰化市| 姚安县| 莱芜市| 观塘区| 金沙县| 措美县| 靖远县| 南阳市| 星座| 安庆市| 怀柔区| 和田县| 浦北县| 东光县| 中牟县| 孝昌县| 巩留县| 惠安县| 晋州市| 贞丰县| 徐闻县| 同心县| 甘洛县| 花莲市| 布尔津县| 旌德县| 万年县| 大同县| 长宁区| 怀远县| 博湖县| 武功县| 天柱县| 建水县| 宜宾市| 沂南县| 郧西县| 建宁县| 林甸县| 阿拉尔市|