1. 程式人生 > 其它 >字串的讀入注意事項

字串的讀入注意事項

眾所周知,字串的讀入方式有很多種,但是不同讀入方式拼起來的時候總是會產生一些奇奇怪怪的問題。

getchar() :讀入一個字元,啥都能讀,包括 空格 和 回車。

cin:讀入一個字串,不讀空格。遇到空格和回車停止但是不讀入空格和回車!但會忽略上次讀入剩下的回車!

scanf("%s", s) :讀入一個字串,不讀空格。遇到空格和回車停止但是不讀入空格和回車!但會忽略上次讀入剩下的回車!

gets(s):讀入一行字串,讀入空格。遇到回車停止但是不讀入回車。如果上次使用 gets 讀入,會忽略上次讀入剩下的回車,否則不會忽略!(解決方法是在上次讀入後面加一個 getchar() 把回車讀掉)

scanf("%[^'\n']", s)

:讀入一行字串,注意事項同 gets(s)但是不管上次使用什麼東西讀入,如果有回車,這次讀入依舊會先讀入回車。(\n 兩側的單引號加不加無所謂)

getline(cin, s):讀入一行字串,字串 s 的型別必須是 string 類。具體注意事項同 gets(s),但是它沒有 scanf("%[^'\n']", s) 這個方法的問題。

注:上面提到的 上次讀入 同樣包括讀入整數,字串等一系列情況,但是不包括使用快讀讀入。

快讀的寫法有很多種,至少我的快讀可以把末尾的回車讀掉。

讀到但不讀入:指本次讀入了這個字元,但是下次開始讀的時候依舊會讀入它。


如果有補充或者糾錯歡迎提出