嗨,你们所有的你们精彩的程序员。 我一直在试图使例如执行代码std :: cout重定向的范围
std::cout << "hello" << std::endl;
单词“hello”将被写入我重定向到文件时std::cout
重定向到一个文件。
我有followig程序:
// 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'对象超出了范围.. – WhiZTiM
你真的需要额外的东西,'std :: endl'吗? ''\ n''结束一行。 –
嗨皮特。我不这么认为,但这是他们在课堂上问我们的。谢谢! – avneraggy