这是一个考试问题:
考虑下面的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);
我对在此代码中使用
log
和clog
感到困惑。为什么我们不能仅创建文件并写下我们需要的所有内容?任何解释将不胜感激。 最佳答案
clog_buf
指向在用rdbuf
重置之前,阻塞所指向的流缓冲区。通过使用C(clog.rdbuf( clog_buf );
)将阻塞的流缓冲区重置为以前的缓冲区,可以实现完全关闭。