无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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)輸入輸出實例分析與反思的評論 (共 條)

分享到微博請遵守國家法律
利川市| 三原县| 务川| 曲麻莱县| 三都| 肇州县| 克拉玛依市| 资兴市| 桃园市| 望都县| 德安县| 修文县| 白朗县| 益阳市| 常熟市| 澄江县| 阜宁县| 黑龙江省| 陆丰市| 运城市| 丰县| 武鸣县| 建昌县| 闽侯县| 西乡县| 澎湖县| 林口县| 苍溪县| 武乡县| 毕节市| 祁连县| 宜君县| 大石桥市| 将乐县| 柳林县| 阳原县| 河北省| 游戏| 吕梁市| 门源| 富源县|