【问题标题】:c++ overloading operator [] for files用于文件的 c++ 重载运算符 []
【发布时间】:2015-01-31 19:19:48
【问题描述】:

我需要为文件重载运算符[],因此它将返回位于文件中的字符(简单)。 例如Buff[4] 将返回第四位的字符: ch = Buff[4].

我发现很难为相反的情况编写代码,在这种情况下它会改变字符(我知道如何处理文件)。
例如:Buff[3] = ch 会将文件中第 3 位的 Buff 更改为 ch

感谢您的帮助!

【问题讨论】:

  • 对于第二种情况,你可能需要返回一个代理对象......或者只是内存映射文件......

标签: c++ operator-overloading operators filestream


【解决方案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);
    }
}

【讨论】:

  • @MatsPetersson 我想我假设他正在异步写入缓冲区,因此这会更改缓冲区中的字符,然后将缓冲区写入文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
相关资源
最近更新 更多