推 EdisonX:謝謝回覆 !! 01/13 13:18
※ 引述《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