2013-03-20 33 views
4

我使用C++ streambuf類作爲編譯器項目,並且需要一種方便的方法來獲取流中的當前位置。streambuf get streampos

有兩個成員函數streambuf::pubseekpos和一個streambuf::pubseekoff來修改位置,我很困惑沒有streambuf::pubgetpos成員函數(或類似的東西)來讀取它。

似乎有兩種可能的解決方法:

  1. 我可以保存在一個單獨的變量的當前位置,並修改它 手動每當我從流中讀取字符。

  2. 我可以撥打​​,它返回 新的流位置。

第二種選擇似乎可用,但效率低下,對於這樣一項微不足道的任務來說不美觀。有沒有更好的方法來做到這一點?

+0

選項2,效率低下或沒有效率,似乎是一個不錯的選擇。當涉及到C++時,我不會關心美學。 :)也許Streambuf的API是一個最小的API。 – IAbstract 2013-03-20 13:48:29

回答

6

streambuf沒有用於讀取位置的單獨界面。但是,istreamostream(分別是tellgtellp)。

有趣的是,流use your option 2得到他們的立場,所以它就好了。

+1

這非常有說服力。 – user2190941 2013-03-20 14:09:37

相關問題