首頁 >後端開發 >C++ >為什麼使用 `>>` 後 getline() 會在迴圈中出現意外行為?

為什麼使用 `>>` 後 getline() 會在迴圈中出現意外行為?

Barbara Streisand
Barbara Streisand原創
2024-11-25 16:51:12333瀏覽

Why Does getline() Behave Unexpectedly in a Loop After Using `>>`? 
“/>>`?

C 中的getline() 和控制台輸入

在C 中, getline() 函數用於從流中提取一行文本,通常但是,當在循環中多次使用時,它可能會出現異常。

問題:
嘗試使用getline() 收集字串的使用者輸入以及使用>> 收集整數和雙精確度數時,使用者無法輸入第一個字串相反,控制台遊標會跳到第二個getline() 之後的下一個輸入提示。

解釋:
問題源自於getline() 和>> 運算子的混合,並讀取輸入,直到到達a但是,它會在輸入流中留下換行符(n)。被呼叫時>>,它將換行符讀取為空字串,導致不良行為。符> ;> 一致:

如果所有輸入都可以使用>>處理,請堅持下去

使用getline() 一致:如果輸入涉及字串或混合類型,請專門使用getline() 並從檢索到的字串中解析數字。可以使用stringstream 或Boost 這樣的函式庫來完成。

以上是為什麼使用 `>>` 後 getline() 會在迴圈中出現意外行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn