C++为文件重载运算符[]
问题描述:
我需要为文件重载运算符[]
,所以它会返回位于文件中的字符(简单)。 例如Buff[4]
将返回第四位的字符: ch = Buff[4]
。C++为文件重载运算符[]
我发现很难为相反的情况编写代码,它会改变字符(我知道如何使用文件)。
例如:Buff[3] = ch
会将文件中位置3的Buff更改为ch
。
感谢您的帮助!
答
返回参考字符:
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
对于第二种情况,你可能需要返回代理对象....或者只是内存中的文件... – 2015-01-31 19:26:36