2015-01-31 46 views
0

我需要爲文件重載運算符[],所以它會返回位於文件中的字符(簡單)。 例如Buff[4]將返回第四位的字符: ch = Buff[4]C++爲文件重載運算符[]

我發現很難爲相反的情況編寫代碼,它會改變字符(我知道如何使用文件)。
例如:Buff[3] = ch會將文件中位置3的Buff更改爲ch

感謝您的幫助!

+0

對於第二種情況,你可能需要返回代理對象....或者只是內存中的文件... – 2015-01-31 19:26:36

回答

1

返回參考字符:

char& operator[](size_t index) 

我其實是有點難倒一個優雅的解決方案,同時寫兩個,但你可以返回保持其指數跟蹤類在緩衝區和char值中,並寫入兩個值的變化。

class BuffSpot 
{ 
    Buff* buff; 
    size_t index; 
    char val; 
    BuffSpot(Buff* b, size_t i, char c) : buff(b), index(i), val(c) {} 
    public: 
    char& operator= (const char& right) 
    { 
     val = right; 
     buff->writeToFile(index, val); 
     buff->writeToBuff(index, val); 
    } 
} 
+2

這不會解決「寫入文件」的問題... – 2015-01-31 19:27:01

+0

地圖@MatsPetersson我想我假設他有異步寫入緩衝區,所以這改變了緩衝區中的字符,然後緩衝區被寫入文件。 – IllusiveBrian 2015-01-31 19:29:25