看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《EdisonX (閉上眼的魚)》之銘言: : 問題(Question): : 最近看到 C++ Primer 4th ch8, : 裡面的 class 覺得好莫生,於是先上網找 : fstream, istream, ostream, iostream, istream, ostream... etc 的說明。 : 先找 stringstream 說明, 讓我愈看愈亂 : C++ reference 裡面 stringstream 範例都是用 cin, cout 做範例, : 還有一堆繼承的東西, 就是沒找到範例裡面有 stringstream 的東西, : (讓我感到好像不會用 reference 查資料) : 還是這部份要等念完整本 Primer 的時候才會知道要怎麼看 C++ reference ? : 離題了, 如果要清空 stringstream 重覆使用 : 到底是要 .str(""), 還是要 .clean() ? : clean 是把 flag 清掉 : .str("") 是把 buffer 裡內容清掉 : 重覆使用時是要二個都調用嗎?還是調用其中一個就好了? : 謝謝各位幫忙,小弟感激不盡 stream 類別的 clear() 都是清除 state flag,像是 eofbit 或是 failbit 並不會清除 buffer ,要清除buffer 以 stringstream 來說用 str("") 是沒問題 但是 str() 並不會清除 state flag,考慮下面的程式 stringstream cvt; int i(0); cvt.str("t123"); cvt>>i; // fail cvt.str("123"); cvt>>i; // cvt 依舊是 fail 因為 state flag 沒清除 cout<<i; // i 仍然是 0 所以 str("") 跟 clear() 在這種情況下都會被呼叫 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.71.92
EdisonX:謝謝回覆 !! 01/13 13:18