作为存储多个状态日志等的一种简单方法。我选择了一个std::stringstream
. 如果出现错误,我可以简单地转储.rdbuf()
到一个文件中,以便能够重现我的程序在崩溃之前所做的事情。
我现在的问题是,这个字符串流的大小会无限增长。我已经尝试了几件事来确保我只保留流的最后 1MiB 左右,但没有成功。
.rdbuf()->pubseekoff(...)
.ignore(...)
getline(...)
ss.str() = ss.str().substr(...)
显然,底层缓冲区对象总是只会增加大小 - 无论是否已经读取了一些数据。
有什么方法可以减小大小/将其保持在某个常数(最好没有常规的深拷贝)?作为底层缓冲区对象的循环缓冲区将是完美的 - 这可能吗?特别是。那已经存在了吗?
编辑:该解决方案基本上必须表现得像一个流。它由 procompiler 放置,而不是 std::err 或直接文件流(类似于 boost::log)。因此,使用字符串流不是绝对必要的,但非常有用。(否则我必须实现所有 ostream 的东西才能流式传输 std::endl ...)