有效重置字串流
當嘗試清除字串流以重新使用它進行進一步的輸入和提取時,必須採用適當的技術來完全重置流。考慮以下範例:
stringstream parser; parser << 5; short top = 0; parser >> top; parser.str(""); // Attempting to reset the parser parser << 6; // Input value ignored short bottom = 0; parser >> bottom;
在這種情況下,嘗試透過將空字串指派給字串流的 str 成員來重設字串流並不會完全清除流。結果,後續輸入值 6 被忽略,第二次擷取操作失敗。
要有效地重置字串流,不僅需要為 str 分配一個空字串,還需要清除所有剩餘的失敗和eof 標誌。這可以使用clear方法來實現:
parser.str(std::string()); parser.clear();
透過執行這兩個操作,字串流被完全重置並準備好重用,因為底層序列被清空並且所有標誌被清除。未能執行這兩個步驟可能會導致意外行為,例如串流保持在「檔案結束」狀態,導致後續操作失敗。
以上是如何有效地重置字串流?的詳細內容。更多資訊請關注PHP中文網其他相關文章!