2015-01-31 65 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