#16305: 有何差別


kolagh7486 (電腦前的咖啡)

學校 : 國立臺中高級工業職業學校
編號 : 88363
來源 : [1.200.121.142]
最後登入時間 :
2022-09-24 16:06:42
a009. 解碼器 -- ACM 458 | From: [111.246.86.96] | 發表日期 : 2018-12-17 21:07

getline(cin, string)

 

cin>>x;

 
#16309: Re:有何差別


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
a009. 解碼器 -- ACM 458 | From: [106.105.27.148] | 發表日期 : 2018-12-18 01:41

因為你沒有講 x 的型態是什麼,
所以下面是以 x 的型態為 STL 的 string 來做回答~



getline(cin, string) 會讀取一整行的輸入,
也就是讀取到 換行('\n') 或 EOF 才會停止,
其中會把 換行字元 讀取掉但其並不會儲存於 string 之中~

而 cin>>string 則是讀取一段連續的非空白字元,
其操作相當於先略過 空白字元(包括' ', '\0', '\n', '\t' 等等) 直到 非空白字元 為止,
並讀取連續的非空白字元直到 空白字元 或 EOF 才會停止,
其 string 中所儲存的只會有 非空白字元 而已~



假設一段輸入資料如下:
" owo abc\n123\n", (注意第一個字元是 ' ' )

執行 getline(cin, string) 之後的結果,
string 會儲存 " owo abc", (有包含第一個字元的 ' ' , 但不包含 '\n' )
剩餘的輸入資料為 "123\n", (第一個 '\n' 會被讀取掉)

執行 cin>>string 之後的結果,
string 會儲存 "owo", (不包含第一個字元的 ' ' )
剩餘的輸入資料為 " abc 123\n", (並不會讀取掉之後的 空白字元 , 所以第一個字元是 "owo" 之後的 ' ' )



以上希望有幫助到你~ OwO

 
ZeroJudge Forum