【发布时间】:2014-01-04 12:37:15
【问题描述】:
这是一道考试题:
考虑到下面的 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; //***** }
- A.什么都没有。
- 乙。退出();
- C. clog.rdbuf(clog_buf);
- D. clog.rdbuf(0);
- E. log.rdbuf(0);
我对在这段代码中使用log 和clog 感到很困惑。为什么我们不能只创建一个文件并写下我们需要的所有内容?任何解释将不胜感激。
【问题讨论】:
-
您有两个(
clog和log)流都拥有相同的streambuf。当流超出范围时会发生什么? -
在考试季中询问考试问题的答案(即使您已经提交了考试)似乎是一个糟糕的选择。也许你可以/应该问你的导师?
-
@jrok:谢谢,已更正。
-
典型的考试题。在现实生活中,您会访问 cppreference.com 或查看您的 Strousup 书籍以确保您正确使用了 API。因为通常当您认为自己做对了时,其实并没有。
-
@datenwolf:你还没有更正它。 “编译器可能会警告”和“肯定缺少返回语句”都是不真实的。
main是一个特例。