这是一个考试问题:


  考虑下面的C ++程序,应该插入什么来代替
  //*****确保100%干净关闭?

#include <iostream>
#include <fstream>

int main(int argc, char* argv[])
{
    using namespace std;

    fstream log("log.txt", ios::out);
    streambuf* clog_buf = clog.rdbuf(log.rdbuf());

    clog << "Test the logger" << endl;

    //*****
}

  
  
  答:什么都没有。
  B.exit();
  C.clog.rdbuf(clog_buf);
  D.clog.rdbuf(0);
  E.log.rdbuf(0);
  


我对在此代码中使用logclog感到困惑。为什么我们不能仅创建文件并写下我们需要的所有内容?任何解释将不胜感激。

最佳答案

clog_buf指向在用rdbuf重置之前,阻塞所指向的流缓冲区。通过使用C(clog.rdbuf( clog_buf );)将阻塞的流缓冲区重置为以前的缓冲区,可以实现完全关闭。

10-06 09:43