c++ - 将所有程序输出写入 C++ 中的 txt 文件

标签 c++ file-io

我需要将我所有的程序输出写入一个文本文件。我相信这是这样做的,

sOutFile << stdout;

其中 sOutFile 是像这样创建文件的 ofstream 对象:

sOutFile("CreateAFile.txt" ); // CreateAFile.txt is created.

当我将 stdout 插入 sOutFile 对象时,我得到一些代码,这些代码似乎类似于 octal [十六进制] 代码或我创建的文本文件中的某种地址。

0x77c5fca0

但令我困惑的是,在我的程序中我多次使用 cout。大多只是字面上的陈述。如果我没记错的话,那是程序输出。

如果这段代码是一个地址,它会包含我所有的输出吗?我可以将它读回程序并以这种方式找出答案吗?

我该怎么做才能将我所有的程序输出写入一个文本文件?

最佳答案

如果您的程序已经使用 cout/printf 并且您想将当前输出的所有内容发送到一个文件,您可以简单地重定向 stdout 以在您现有的调用之前指向一个文件: http://support.microsoft.com/kb/58667

相关代码:

freopen( "file.txt", "w", stdout );
cout << "hello file world\n"; // goes to file.txt
freopen("CON", "w", stdout);
printf("Hello again, console\n"); // redirected back to the console

或者,如果您只想将某些内容打印到文件中,您只需要一个常规文件输出流:http://www.cplusplus.com/doc/tutorial/files.html

相关代码:

ofstream myfile;
myfile.open("file.txt");
myfile << "Hello file world.\n";
printf("Hello console.\n");
myfile.close();

编辑汇总 John T 和 Brian Bondy 的答案:
最后,如果您从命令行运行它,您可以使用重定向运算符“>”或附加“>>”来重定向输出,就像其他人提到的那样:

myProg > stdout.txt 2> stderr.txt

关于c++ - 将所有程序输出写入 C++ 中的 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/574543/

相关文章:

c++ - 如何从 std::list 中正确删除指针?

c - c语言从文件中读取数据

java - 关闭后删除由外部应用程序打开的文件

java - Files.readAllBytes 与 Files.lines 获取 MalformedInputException

c++ - 我怎样才能让 Emacs 在我的代码中缩进我的//注释?

c++ - C++中的巨大二维数组

c++ - 如何从 VC6 中的范围构造 std::map

c++ - 实践中的 union 、别名和类型双关语 : what works and what does not?

c++ - outData.txt 没有输出正确的值

python - 在书写行之间留出空间