大家好,我希望你们这些优秀的程序员能够帮忙翻译一下。我一直在尝试将std::cout
重定向到文件中,这样当执行代码时,例如:
std::cout << "hello" << std::endl;
我将把单词"hello"写入我正在重定向的文件。
我有以下程序:
// Redirection.cpp
#include <iostream>
#include <fstream>
int main(int argc, char **argv) {
if(argc == 2){
std::cout << "Output file supplied, redirecting to output.txt" << std::endl;
std::ofstream out("C:\\Avner\\HUJI\\CPP\\ex2\\output.txt");
std::cout.rdbuf(out.rdbuf());
std::cout << "This file contains output of Redirection.cpp" << std::endl;
}
std::cout << "This should be displayed in console or in the output file, if supplied" << std::endl;
return 0;
}
我期望
output.txt
的内容是:This file contains output of Redirection.cpp
This should be displayed in console or in the output file, if supplied
但实际上,它只会读取:
This file contains output of Redirection.cpp
我认为我使用的重定向仅适用于该范围,而不适用于任何外部范围。如何解决这个问题?我需要的行为是,只有在提供输出文件时,所有打印才会被写入该文件,而不是控制台。感谢您免费提供的帮助和支持!
out
对象超出了范围。 - WhiZTiMstd::endl
提供的额外功能吗?'\n'
可以结束一行。 - Pete Becker