首頁 > 後端開發 > C++ > 主體

為什麼使用 `str(\'\')` 重置字串流不能清除它?

DDD
發布: 2024-11-04 03:04:30
原創
928 人瀏覽過

Why Doesn't Resetting a Stringstream with `str(

清除Stringstream

以下程式碼嘗試清除名為parser 的stringstream 物件:

<code class="cpp">stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); // HERE I'M RESETTING parser

parser << 6; // DOESN'T PUT 6 INTO parser
short bottom = 0;
parser >> bottom;</code>
登入後複製

但是,這種方法不能如預期工作。讓我們解釋一下原因。

問題:

問題在於字串流處理檔案結尾 (eof) 和失敗標誌的方式。當第一次提取(>> top)到達字串末尾時,它設定 eof 位元。對流的後續操作會失敗,因為 eof 位元保持設定狀態。

解:

要正確清除字串流,底層序列以及失敗和 eof 標誌都必須被重置。以下程式碼執行此操作:

<code class="cpp">parser.str(std::string());
parser.clear();</code>
登入後複製

str() 方法將底層序列設為空字串,而clear() 方法清除失敗和 eof 標誌。

使用這些變更後,程式碼將正確地將值 6 讀取到解析器流中並將其儲存在底部變數中。

以上是為什麼使用 `str(\'\')` 重置字串流不能清除它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!